Find / kill very long running processes by name, args and age
recommended way:
pipx install dieyoung
or (better if inside python virtualenv):
pip install dieyoung
your system may have pip3 instead of pip.
See all my ssh sessions:
$ dieyoung ssh
732333 8h ssh alv
742297 7h ssh jul
745335 6h ssh mx
875490 38m ssh -i /home/xenon/.ssh/id_ed25519 mx
880910 25m ssh mx -i /home/xenon/.ssh/id_ed25519Format is simple: pid, age, cmdline
Now, lets suppose we want to find only ssh to mx:
$ dieyoung ssh mx
745335 6h ssh mx
875490 39m ssh -i /home/xenon/.ssh/id_ed25519 mx
880910 25m ssh mx -i /home/xenon/.ssh/id_ed25519Three sessions are found, because each of them has "ssh" and "mx" in cmdline (in any order). This is how --mode any works (default mode), processes matches our pattern if all words from pattern are found anywhere in process cmdline, even if there are other arguments.
--mode start: First words of cmdline must match pattern, e.g.
$ dieyoung -m start -- ssh -i
875490 39m ssh -i /home/xenon/.ssh/id_ed25519 mxBut this filter will not find process ssh mx -i /home/xenon/.ssh/id_ed25519 (because ssh mx is not ssh -i).
Note, we used -- to separate PATTERN (ssh -i) from dieyoung arguments.
--mode full: process cmdline must fully match pattern, e.g.
$ dieyoung -m full -- ssh -i /home/xenon/.ssh/id_ed25519 mx
875490 40m ssh -i /home/xenon/.ssh/id_ed25519 mxTo find processes older then some age use -a / --age option, like -a 1h30m (to find processes older then 1 hour and 30minutes)
--exe PATH to find only processes with this executable, e.g. if you want to find /usr/bin/php but not /opt/php/7.4/bin/php.
--user USERNAME to find only processes of this user.
After you found processes, you may kill it manually with kill command, or use built-in feature. Add --terminate option to gracefully send SIGTERM to each matching process or --kill to send SIGKILL (like kill -9 <pid>).
Add -j / --json to show more info about processes
If --kill or --terminate given, dieyoung will count number of matching processes and refuse if it has to kill more then --notmore N. Default value is 1.