How can I see/stop current running crontab tasks?
- How can I see crontab tasks which are in progress?
- How can I stop crontab tasks which are in progress, manually?
Is [this] question about see the current running cron processes?
Yes
To kill a process manually one way is to use pkill
I had thought about pkill/killall, but some of my commands in crontab file are respectively! it means that after finishing a command, the next one will be started! for example:
sudo crontab -e
00 10 * * * /usr/bin/wget LINK ; shutdown -h now
So, If I kill wget
, the computer will be powered off!!! -> I want to kill a cron task fully, not a part of it!
The next pkill
problem: What about scripts? (I've imported some bash scripts to crontab -e
) --> sudo pkill ???
Solution 1:
Firstly, use only one command per line in crontab. Change this crontab line:
00 10 * * * /usr/bin/wget LINK ; shutdown -h now
so it looks like:
00 10 * * * /path/to/my/crontab/script1.sh
and create /path/to/my/crontab/script1.sh
with this content:
#!/bin/bash
/usr/bin/wget LINK
shutdown -h now
Of course, don't forget to give it execution permission:
chmod +x /path/to/my/crontab/script1.sh
Secondly, you can see running crontab tasks, in a useful and readable format, in the output of:
ps -o pid,sess,cmd afx | egrep -A20 "( |/)cron( -f)?$"
They will appear in the first lines, something like this:
1108 1108 cron
4288 1108 \_ CRON
4289 4289 \_ /bin/sh -c /path/to/my/crontab/script1.sh
4290 4289 \_ /bin/bash /path/to/my/crontab/script1.sh
4295 4289 \_ /usr/bin/wget LINK
First column is PID, second is Session ID and third is the command started by cron. You can kill all the processes related to a specific cron task using the Session ID, so in the example above you should kill Session ID 4289:
pkill -s 4289