bash - 无法使用 crontab 运行脚本
问题描述
我无法通过 crontab 运行这个简单的脚本,该脚本在我直接运行的地方运行良好。我有一个类似的 MySQL 脚本,这是从中复制的,只是将 MySQL 更改为 apache2。但原来的工作,但不是这个。直接运行就可以了。
UP=$(pgrep apache2 | wc -l);
if [ "$UP" -eq 0 ];
then
sudo /usr/sbin/service apache2 restart
fi
crontab:
*/2 * * * * /var/server-scripts/mysqlStatus.sh > /dev/null 2>&1 // Works Perfect
*/2 * * * * /var/server-scripts/apacheStatus.sh > /dev/null 2>$1 // Doesn't work, script runs perfect directly
解决方案
根据您发布的 crontab,我猜您对两个脚本都使用相同的用户?但是您的脚本首先不是以 shabang 开头的,其次它们必须是可执行和可读的。
如果您不能或不能使它们可执行,请更改您的工作以使用正确的解释器运行您的脚本......
*/2 * * * * sh /var/server-scripts/apacheStatus.sh > /dev/null 2>&1
好吧,通过删除> /dev/null 2>$1
(是错字吗?)解决了这个问题,我纠正了这一点> /dev/null 2>&1
主题,一个更好的脚本:
#!/bin/sh
if [ $(pgrep -c apache2) -eq 0 ]
then
/usr/sbin/service apache2 restart
fi
推荐阅读
- javascript - React 从包装器组件调用函数
- sql - 查询以组合列值
- java - 如何使用 Java 访问 MS Access 查询(不是普通表)?
- javascript - 如何将 3d 文本移动到 A-FRAME 中的单击位置?
- stripe-payments - 以相同的价格更改 Stripe 计划
- javascript - 如何根据来自 API [React TypeScript] 的数据在两个 ui 容器之间进行选择
- php - 用数组插入多条记录
- docker - 使用 minikube 隧道后 minikube 中的端口转发服务
- outlook - MAPI over Http 是否仍支持基本身份验证
- windows - GithubActions CI:如何在 Windows VM 中查找文件?