xyz*_*xyz 16 cron administration
我是第一次使用 crontab。想写几个非常简单的测试cron任务,并运行它们。
$crontab * * * * * echo "Hi"
Run Code Online (Sandbox Code Playgroud)
不产生任何东西。
crontab */1 * * * * echo "hi"
Run Code Online (Sandbox Code Playgroud)
说*/1: No such file or directory。
另外,我如何列出当前正在运行的 cron 任务(不仅是我拥有的任务,还有其他用户(例如 root)启动的任务)。
以及如何删除特定的 cron 任务?
Mat*_*Mat 25
你不能那样用crontab。用于man crontab了解调用此实用程序的正确方法。
您将要用于crontab -e编辑当前用户的 cron 条目(您可以添加/修改/删除行)。用crontab -l看的配置任务的当前列表。
至于查看其他用户的 crontabs,如果不是默认安装的 root 用户,这是不可能的。请参阅如何列出所有用户的所有 cron 作业以了解列出所有内容(以 root 身份)的方法。
注:要非常小心,当你在命令行(在使用shell的通配符*和?特别)。*将被扩展到当前目录中的文件列表,这可能会产生意想不到的效果。如果您想将其*作为参数传递给某物,请引用它 ( '*')。
Kus*_*nda 11
有两种编辑方式crontab:
以交互方式,使用crontab -e,这将crontab在$VISUAL或指定的编辑器中打开$EDITOR,或
非交互式地,使用crontab crontab.txt,这将简单地crontab从文件中导入条目crontab.txt,替换当前用户的现有活动 crontab。
您遇到的问题是您只是crontab错误地使用了命令。
以下涉及非交互式 crontab 操作:
因此,要以编程方式删除特定任务,您可以执行以下操作
$ crontab -l | grep -v 'PATTERN' >crontab.txt && crontab crontab.txt
Run Code Online (Sandbox Code Playgroud)
wherePATTERN是一个正则表达式,它将匹配您要删除的任务。在这里,crontab -l会给你你当前的crontab.
或者,如果您crontab-fragment.txt想从活动 crontab 中删除名为的文件中的条目,
$ crontab -l | grep -v -Fx -f crontab-fragment.txt >crontab.txt && crontab crontab.txt
Run Code Online (Sandbox Code Playgroud)
这将读取当前的 crontab 并过滤掉(删除)crontab-fragment.txt当前目录中文件中也出现的任何行(使用完整的行字符串比较)。结果保存到crontab.txt然后从那里加载以替换当前的 crontab。
要添加一项或多项任务,请执行以下操作
$ crontab -l | cat - crontab-fragment.txt >crontab.txt && crontab crontab.txt
Run Code Online (Sandbox Code Playgroud)
这是假设文件crontab-fragment.txt包含您要添加的条目。它读取当前的 crontab,将条目附加crontab-fragment.txt到 this 并创建crontab.txt. crontab.txt然后该文件替换当前的 crontab。