Linux下使用脚本定时自动重启某进程(及处理crontab执行无效问题)

1、查找进程

[labour@ICLinuxTwo ~]$ jps
14107 Jps
13953 Bootstrap

2、kill

kill -9 13953

3、使用脚本

#找到进程并循环kill
PID=$(jps | grep "Bootstrap" |awk '{print $1}')
echo $PID
for id in $PID
do
  kill -9 $id
  echo "process $id killed"
done
#重启
/home/labour/apache-tomcat-6.0.45/bin/startup.sh

4、定时调度

  手动登陆执行比较麻烦,设置为每30分钟执行一次,只在白天8点~20点执行。需要安装crontab服务。

crontab -e

  输入并保存退出:

*/30 8-20 * * * /home/labour/restart_svr.sh

5、疑难处理

  正常执行该sh脚本是有效的,使用crontab执行却发现搜索不到进程。分析原因是因为crontab执行时不会带上环境变量。故修改调度命令如下即可:

*/30 8-20 * * * source /home/labour/.bash_profile && /home/labour/restart_svr.sh

6、调度配置例子:

0 1 * * * /home/testuser/test.sh
每天晚上1点调用/home/testuser/test.sh

*/10 * * * * /home/testuser/test.sh
每10钟调用一次/home/testuser/test.sh

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache

*/30 * * * * /usr/sbin/ntpdate 210.72.145.44
每半小时同步一下时间

8、crontab命令

crontab -u//设定某个用户的cron服务

crontab -l//列出某个用户cron服务的详细内容

crontab -r//删除某个用户的cron服务

crontab -e//编辑某个用户的cron服务

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用crontab定时任务执行shell脚本连接数据库却无效时,可能有以下几个原因: 1. 环境变量问题:当使用crontab执行脚本时,它会在一个独立的环境中运行,可能缺少某些环境变量。在脚本使用绝对路径来引用数据库客户端工具和其他依赖项,以确保它们能够正确地被执行。 2. 用户权限问题crontab任务是在指定的用户权限下运行的。确保该用户具有执行脚本所需的数据库连接权限。如果脚本需要root权限运行,你可能需要以root身份运行crontab任务。 3. 日志记录问题:在脚本中添加日志记录功能,将输出和错误信息重定向到一个文件中。这样可以帮助你排查问题,在日志中查看脚本执行过程中是否出现了错误。 4. 数据库连接配置问题:检查脚本中的数据库连接配置是否正确。确保数据库地址、用户名、密码等参数正确无误,且与手动执行脚本时保持一致。 5. 路径问题:在脚本使用相对路径时,确保相对路径是相对于脚本所在的位置而不是crontab所在的位置。最好使用绝对路径来引用脚本所需的文件和工具。 6. 依赖项问题:如果脚本依赖于某些软件包或库,请确保这些依赖项已经安装并正确配置。在脚本中添加一些测试命令,例如打印环境变量或执行其他简单的操作,以验证是否存在依赖项问题。 7. 计划任务设置问题:检查crontab任务的设置是否正确。确认定时任务是否按照预期的时间执行,可以尝试设置一个简单的测试任务来验证。 通过排查以上可能的原因,你应该能够找到导致crontab定时任务执行shell脚本连接数据库无效问题所在,并做出相应的修复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值