crontab 如果不存在则运行

本文介绍了一个使用Shell脚本实现的简单定时任务案例。该脚本每隔一定时间检查指定进程是否存在,若不存在则启动该进程并记录日志。具体涉及的技术包括Shell脚本编写、进程管理及日志记录。

如果该进程不存在,那么运行,并且将时间写入到日志中。

*/30 7-20 * * * log=/tmp/crawl.log;echo `date -R` >> $log; pgrep -laf crawl_index.py | grep -v /bin/sh > /dev/null || python3.6 /htdocs/crawl/crawl_index.py >> $log 2>&1
资源下载链接为: https://pan.quark.cn/s/f989b9092fc5 在 Linux 系统中,crontab 是一个强大的工具,用于安排周期性执行的任务,广泛应用于自动化运维。然而,当使用 crontab 定时运行包含特定命令(例如 Java 应用)的 Shell 脚本时,可能会出现一些问题。比如,crontab 能够触发脚本,但脚本中的某些命令(如 Java 命令)却无法正常运行。这主要是因为 crontab 执行时的环境与交互式登录 Shell 的环境同,它可能没有加载完整的用户环境变量,导致依赖这些变量的命令无法正常工作。以 Java 命令为例,它通常需要 JAVA_HOME、PATH 等环境变量来定位 Java 可执行文件。 为了解决这一问题,我们需要在 Shell 脚本中显式地设置这些环境变量。例如: 这样,即使在 crontab 的环境中,Java 命令也能找到所需的环境变量。 接下来,脚本可以包含检查服务状态并根据需要启动或重启服务的逻辑。比如,通过 ps 命令检查进程是否存在,如果存在,则使用 nohup 启动 Java 应用,并将日志输出到指定文件: 在这个脚本中,nohup 命令让 Java 应用在后台运行,即使终端关闭也会被终止。2>&1 将标准错误重定向到标准输出,所有输出都会记录到日志文件 $Log 中,便于后续排查问题。 最后,别忘了在 crontab 中配置定时任务。例如,每分钟检查一次服务状态,可以这样设置: 其中,cd 命令用于切换到脚本所在的目录,>> 用于将脚本的输出追加到指定的日志文件。 总的来说,当使用 crontab 定时执行包含特定命令(如 Java)的 Shell 脚本时,如果遇到命令无法执行的问题,应检查脚本是否正确设置了所需的环境变量,并确保所有依赖都已就绪。同时,良好的日志记录和调试机制是解决问
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值