Portál AbcLinuxu, 1. května 2025 16:13
#!/bin/bash # # Oprava popisu dakujem! # Vypnutie PC ak skonci kodovanie v avidemuxe # Verzia 0.1 # # Namiesto avidemux mozno zvolit aj iny soft ######################################################## # Priklad uplatnenia: # Spustite Avidemu, Kino, Cinelerru a iny soft co # trva niekolko hodin. Je to domace PC a chcem ked # sa dokkonci proced aby sa pocitac vypol. # Tak na to sluzi tento skriptik. V diskusii je aj # riesenie priamo pozerat na zataz CPU. ######################################################## # soft="avidemux" #ktory soft sa ma kontrolovat echo "Vypnutie PC na zaklade behu aplikacie:" $soft ideto=$(ps aux | fgrep $soft | fgrep -v grep | cut -d ' ' -f 21) if [ "$ideto" != "R" ]; then echo "Program ani nebezi!" exit 1 fi until [ "$ideto" == "S" ]; do sleep 5 # staci pozriet raz za 5 sekund ideto=$(ps aux | fgrep $soft | fgrep -v grep | cut -d ' ' -f 21) done echo "Program uz nebezi este cakam 60 sekund." sleep 60 #este pockaj minutu ideto=$(ps aux | fgrep $soft | fgrep -v grep | cut -d ' ' -f 21) if [ "$ideto" == "S" ]; then echo "Vypinam Pocitac!!!" # sudo shutdown -h now fi exit 0
Tiskni
Sdílej:
program && sudo shutdown -h now
while true; do top -d5 -b -n2 -p `/sbin/pidof avidemux2` |\ grep -q ' 0\.0 .* avidemux2' && echo 'Nebezi!'; doneSprávné řešení je samozřejmě spouštět v avidemux skript...
Finta měla být v tom, že 0.0 v tom regexpu je vytížení procesoruNj, aspoň jednou jsem si to přečíst mohl..
'pidof avidemux'
je něco jiného než `/sbin/pidof avidemux2`
(hlavně ty apostrofy jsou "naopak")
2. nezjišťuji, jestli je spuštěný, ale jestli zatěžuje procesor na víc než 0.0 $ pidof firefox-bin 28556 $ /sbin/pidof firefox-bin bash: /sbin/pidof: No such file or directory
[ivok@zero ~]$ pidof mozilla-firefox-bin bash: pidof: command not found [ivok@zero ~]$ /sbin/pidof mozilla-firefox-bin 5669
~$ top -d5 -b -n1 -p '/bin/pidof avidemux' top: bad pid '/bin/pidof avidemux' ale ~$ top -d5 -b -n1 -p $(/bin/pidof avidemux) top - 03:54:47 up 6:22, 8 users, load average: 1.00, 0.94, 0.63 Tasks: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie Cpu(s): 14.2% us, 0.8% sy, 0.0% ni, 83.8% id, 0.8% wa, 0.3% hi, 0.1% si Mem: 905896k total, 874800k used, 31096k free, 92460k buffers Swap: 2441872k total, 2796k used, 2439076k free, 419580k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 18078 jj 25 0 97212 40m 9716 R 99.9 4.6 12:35.22 avidemux a nie je lepsie to volat takto? Co je na tomto zle?: ~$ top -d5 -b -n1 | grep avidemux 18078 jj 25 0 97212 40m 9716 R 94.8 4.6 14:44.15 avidemux A ak to dam ako celok tak takto mi to funguje super: #!/bin/bash while true; do top -d5 -b -n1 | grep avidemux | \ grep -q ' 0\.0 .* avidemux' && echo 'Nebezi!'; done
$ ps aux | fgrep avidemux jj 28715 46.5 6.7 105284 61020 ? Ss 05:49 209:01 /usr/bin/avidemux $ ps aux | fgrep avidemux jj 28715 46.5 6.7 105284 61020 ? Ss 05:49 209:01 /usr/bin/avidemux jj 12145 0.0 0.0 2236 520 pts/3 R+ 13:18 0:00 grep -F avidemux xproste chyti sam seba preto ten druhy grep, ale urcite sa to da riesit nejakym prepinacom. Len som sa zatial nepozrel akym. grep -v odfiltruje aj prvy grep kedze je tam slovo avidemux.
ps ... | grep '[a]videmux'
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.