A partir de GNU bash, version 4.4.19(1)-release (x86_64-pc-linux-gnu)
e não estou usando uma VM:
echo $(yes)
existe o shell e não congela o sistema, e:
ls /*/../*/../*/../*/../*/
retorna
bash: /bin/ls: Argument list too long
Mas, como regra, quando você lida com algo que pode obter todos os recursos de um sistema é melhor definir limites antes de executá-los, se você sabe que um processo pode ser um processador, você pode iniciá-lo com cpulimit
ou execute renice
.
Se você quiser limitar os processos que já foram iniciados, você terá que fazer um por um pelo PID, mas você pode ter um script em lote para fazer isso como o abaixo:
#!/bin/bash
LIMIT_PIDS=$(pgrep tesseract) # PIDs in queue replace tesseract with your name
echo $LIMIT_PIDS
for i in $LIMIT_PIDS
do
cpulimit -p $i -l 10 -z & # to 10 percent processes
done
No meu caso pypdfocr
lança o ganancioso tesseract
.
Além disso, em alguns casos, sua CPU é muito boa. Basta usar um renice
assim:
watch -n5 'pidof tesseract | xargs -L1 sudo renice +19'