某财务系统因大量打印账表,导致系统卡顿,需要重启系统释放资源。为了防止每天加班只为重启系统服务,本人编写了以下脚本,用于定时重启系统服务。
1.创建shell文件
vim server_restart.sh脚本内容:
注意:有些程序不可以直接kill会造成数据丢失,需要用其他方式关闭进程。
#!/bin/bash #获取服务的pid和ppid server_pid=$(ps -ef | grep -m 1 server_name | awk -F " " '{print $2}') server_ppid=$(ps -ef | grep -m 1 server_name | awk -F " " '{print $3}') #判断进程存在则杀死进程 if [[$server_pid != '' && $server_ppid != '']] then echo '杀死进程' kIll -9 $server_pid $server_ppid fi $check_pid=$(ps -ef | grep -m 1 server_name | awk -F " " '{print $2}') #判断是否kill成功 if [[$check_pid != $server_pid]] then echo "启动服务" cd /path #服务启动文件路径 ./server_name #启动服务 else echo "程序未杀死" fi正常情况下可以不用加判断,为了保险起见我还是加上两个if判断。脚本保存后需要设置执行权限:
chmod +x server_restart.sh2.通过Linux环境中自带的crond实现定时功能。
crontab -e设置每天凌晨两点触发脚本:
MAILTO="" #邮件路径为空,不保存邮件 0 2 * * * /PATH/server_restart.sh #脚本存放的路径做完以上操作,就可以实现定时重启系统服务的功能了