我正在尝试编写一个脚本,该脚本将使用 cron 下载、启用和添加任务,然后向计算机添加自动更新和升级任务。
到目前为止我所拥有的是
sudo apt install cron
sudo systemctl enable cron
直到这里一切都好然后我添加(经过研究,以下命令)
<(crontab -l) <(echo '50 19 * * * sudo apt update -y') | crontab -
<(crontab -l) <(echo '00 20 * * * sudo apt upgrade -y') | crontab -
当我检查文件时crontab -l
我看到脚本确实按照应有的方式编写了任务,但它没有运行(我尝试每分钟运行一次 apt install 以查看其是否正常工作)
50 19 * * 3 root sudo apt update -y
但是当我在该文件上使用 nano编写此命令时,/etc/crontab
它起作用了
我尝试添加根渗透crontab -e
但仍然不起作用
有什么解决办法吗?
有没有办法添加带有脚本的文本行/etc/crontab
? (网上没找到方法)
谢谢大家
答案1
在任何正常的系统上,cron
应该可用。因此不需要安装cron
和启用via 。systemctl
然而,它使您的脚本依赖,systemd
而这种依赖不是必需的。
尝试这个:
#!/bin/bash
USER=root
FILE=input.file.cron
# or get it from the command line arguments
crontab -u $USER -l | grep -v '#--$FILE:$USER' > /tmp/cr-$USER
awk '{printf("%-100s #--$FILE:$USER\n", $$0) }' $FILE >> /tmp/cr-$USER
crontab -u $USER /tmp/cr-$USER
rm -f /tmp/cr-$USER
答案2
您可以通过将编辑器设置为 来在一行中完成此操作ed
。
printf "a\n50 19 * * * sudo apt update -y\n.\nw\nQ\n" | EDITOR=ed crontab -e
本质上,将一行内容添加到文件中,退出编辑模式,写入并保存。