gpt4 book ai didi

linux - 创建和删除每个 shell 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:49 25 4
gpt4 key购买 nike

场景如下:

我有一个 Java 小程序,它显示我的服务器上运行的 Cronjobs。现在我想从小程序中创建和删除 Cronjobs。小程序和服务器之间的通信不是问题,但我不太确定如何为每个脚本创建 Cronjobs,以便我可以在需要时轻松删除它们。

在我看来,每个 cronjob 都有一个自己的目录,这样我就可以根据需要逐一删除。

感谢每一个建议

最佳答案

您需要一个无需执行任何操作即可调用 crontab -e 的脚本。当您拥有 crontab 的完整副本时,首先删除旧的 cron。

$ crontab -r
$ export TERM=vt100; crontab -e >/dev/null 2>&1 <<@
:r /full/path/to/your/cronfile
:wq
@
$ crontab -l

从命令行尝试此操作。当您的 editCron.sh 脚本运行时,调用它。

编辑:上面替换了完整的 crontab,假设您确切地知道您想要哪个版本。当您想要删除/添加一行时,您应该创建一个编辑新 cronfile 的脚本。当您尝试删除要添加的行时,这是最容易的,所以你不必考虑该行是否已经存在。
当您知道 crontab 行中的唯一子字符串时,为每个 crontab 行创建 2 个文件:

$ cat example.key
example.sh
$ cat example.cron
10 * * * * /var/local/bin/example.sh >/dev/null 2>@1

您可以像这样制作和使用 addcronline.sh 脚本(未测试):

$ cat addcronline.sh
if [ $# -ne 1 ]; then
echo Usage: $0 key
echo key: basename of a file in cronlines
exit 1
fi

myCrons=/path/to/your/cronsnippets
keyFromApplet=$1
keyInCronline=$(cat ${myCrons}/${keyFromApplet}.key)
newCron=/full/path/to/your/cronfile

# Get current crontab and delete line when it's part of it
# In sed do not use / but #, since / can easily be port of your key
crontab -l | sed 's#'"${keyInCronline}"'##' > ${newCron}
cat ${myCrons}/${keyFromApplet}.cron >> ${newCron}
echo "Continue as the first code example (starting with crontab -r)"

$ chmod +x addcronline.sh

$ ./addcronline.sh example

当你有简单的按键时,你可以简化上面的脚本。您可以直接使用参数 $1 作为 keyInCronline 并且可以删除 example.key 文件。

关于linux - 创建和删除每个 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29718625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com