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 nowSo, 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 ???
3 Answers
Firstly, use only one command per line in crontab. Change this crontab line:
00 10 * * * /usr/bin/wget LINK ; shutdown -h nowso it looks like:
00 10 * * * /path/to/my/crontab/script1.shand create /path/to/my/crontab/script1.sh with this content:
#!/bin/bash
/usr/bin/wget LINK
shutdown -h nowOf course, don't forget to give it execution permission:
chmod +x /path/to/my/crontab/script1.shSecondly, 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 LINKFirst 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 3 To kill a process manually one way is to use pkill. pkill will stop all processes that have the following pattern in its name. for example to stop all wget processes use:
sudo pkill wget 1 change your cronjob like this
00 10 * * * /usr/bin/wget LINK && shutdown -h nowThis should work, because the && means that the second command only gets executed, when the first one was finished correctly (returning status 0 to the console/system), which shouldn't be the case (because the process got killed by the user and it should return another value then 0).