Řešení 1:
Můžete to udělat kombinací ps , awk a kill:
ps -eo pid,etime,comm
Poskytuje vám třísloupcový výstup s PID procesu, uplynulým časem od spuštění procesu a názvem příkazu bez argumentů. Uplynulý čas vypadá takto:
mm:ss
hh:mm:ss
d-hh:mm:ss
Protože chcete procesy, které běží déle než týden, hledali byste řádky odpovídající tomuto třetímu vzoru. Pomocí awk můžete odfiltrovat procesy podle doby běhu a podle názvu příkazu, jako je tento:
ps -eo pid,etime,comm | awk '$2~/^7-/ && $3~/mycommand/ { print $1 }'
který vypíše pid všech příkazů odpovídajících 'mycommand', které byly spuštěny déle než 7 dní. Zahrňte tento seznam do zabíjení a máte hotovo:
ps -eo pid,etime,comm | awk '$2~/^7-/ && $3~/mycommand/ { print $1 }' | kill -9
Řešení 2:
killall --quiet --older-than 1w process_name