如何查看/停止当前正在运行的crontab任务?


20
  1. 我如何查看正在进行的crontab任务?
  2. 如何手动停止正在进行的crontab任务?

[这个]问题是关于查看当前正在运行的cron进程吗?

手动终止进程的一种方法是使用pkill

我曾经考虑过pkill / killall,但是我在crontab文件中的一些命令分别是!这意味着完成命令后,将开始下一个命令!例如:

sudo crontab -e
00 10 * * * /usr/bin/wget LINK ; shutdown -h now

因此,如果我杀死了wget,计算机将关闭电源!!!->我想完全杀死一个cron任务,而不是一部分!

下一个pkill问题:脚本呢?(我已经将一些bash脚本导入了crontab -e)->sudo pkill ???


您是否有关于查看当前正在运行的cron进程的问题?还是cron职位列表?请编辑您的问题以更清楚地了解这一点。要停止运行的cron作业围棋(askubuntu.com/q/272419/66980
穆罕默德Etemaddar

编辑; 1.是的,正在查看当前正在运行的cron进程吗?(我想将流程置于前台);2.然后,我要手动停止它吗?(不是来自crontab时间表)
迷你

向问题中添加其他信息的最佳方法是使用“ 编辑”按钮对其进行编辑。这样更好看得见,注释主要用于辅助,临时目的。在多种情况下都会删除注释。对您的问题重要的任何事情都应该存在于问题本身中。
冈伯特

Answers:


42

首先,在crontab中每行仅使用一个命令。更改此crontab行:

00 10 * * * /usr/bin/wget LINK ; shutdown -h now

所以看起来像:

00 10 * * * /path/to/my/crontab/script1.sh

/path/to/my/crontab/script1.sh使用以下内容创建:

#!/bin/bash
/usr/bin/wget LINK
shutdown -h now

当然,不要忘记给它执行权限:

chmod +x /path/to/my/crontab/script1.sh

其次,您可以在以下输出中看到以有用且可读的格式运行的crontab任务:

ps -o pid,sess,cmd afx | egrep -A20 "( |/)cron( -f)?$"

它们将出现在第一行中,如下所示:

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

第一列是PID,第二列是会话ID,第三列是cron启动的命令。您可以使用Session ID杀死与特定cron任务相关的所有进程,因此在上面的示例中,您应该杀死Session ID 4289:

pkill -s 4289

1
运行“运行crontab任务”命令时得到以下信息:sh ps: cmd: keyword not found ps: illegal argument: afx
AlecRust 2016年

所以cron不会给“方便”的方式来显示他的过程吗?
Cirelli94 94年

@alecrust:试试看ps -o pid,sess,cmd -afx | egrep "( |/)cron( -f)?$"
Bulrush

0

手动终止进程的一种方法是使用pkill。pkill将停止名称中具有以下模式的所有进程。例如,要停止所有wget进程,请使用:

sudo pkill wget

我曾经考虑过pkill / killall,但是crontab文件中的一些命令分别是!这意味着完成命令后,将开始下一个命令!例如:sudo crontab -e=> 00 10 * * * /usr/bin/wget LINK ; shutdown -h now=>因此,如果我杀死wget,计算机将关闭电源!->我想完全杀死一个cron任务,而不是一部分!下一个技巧问题:脚本呢?(我已经将一些bash脚本导入了crontab -e)->sudo pkill ???
mini

0

像这样改变你的cronjob

00 10 * * * /usr/bin/wget LINK && shutdown -h now

这应该行得通,因为这&&意味着仅在第一个命令正确完成时(将状态0返回到控制台/系统)才执行第二个命令,而不是这种情况(因为该进程被用户杀死,并且它应返回另一个值,然后为0)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.