使用 cron 在文件夹中运行多个脚本

使用 cron 在文件夹中运行多个脚本

我正在使用许多脚本。因此,我确实crontab -e多次使用“ ”添加/删除脚本。我尝试为这些脚本创建“可用/已启用”结构。

例如:
这是我的树:

# all scripts
scripts/available/1.sh
scripts/available/2.sh
scripts/available/3.sh

# enabled scripts 
scripts/enabled/1.sh -> scripts/available/1.sh
scripts/enabled/2.sh -> scripts/available/2.sh

然后我将这一行添加到“ crontab -e”中:

* * * * * /home/user/scripts/enabled/* &> /dev/null

这是输出sudo systemctl status cron.service

     CGroup: /system.slice/cron.service
             ├─17763 /bin/bash /home/user/scripts/enabled/1.sh /home/user/scripts/enabled/2.sh

最后:
1.sh每分钟都在工作,但是2.sh不工作。

我只想从 cron 运行脚本。如果我不想用另一个脚本编写“在目录中运行脚本”的脚本,我该怎么办?

您是否还知道任何活跃的“GNU/Linux 系统管理员” Telegram 群组?

谢谢。

答案1

或者你也可以使用run-parts

* * * * * /usr/bin/run-parts --regex='.+' /home/user/scripts/enabled

参数--regex='.+'允许任何文件名。详细信息:man run-parts

答案2

尝试

for script in /home/user/scripts/enabled/*; do $script &>/dev/null; done

答案3

当您指定

/home/user/scripts/enabled/*

cron 看到

/home/user/scripts/enabled/script1.sh /home/user/scripts/enabled/script2.sh ...

因此,您将以script1.sh该目录中其他脚本的路径名作为参数执行。您的 script1 不读取参数:因此它可以运行,并且运行良好。

相反,cron运行一个脚本 e 表达式“不确定 cron 是否像您想象的那样使用通配符”,然后运行目录中的所有脚本enabled。您可以使用for...do循环来执行此操作。

相关内容