您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

Linux如何快速编写重启动脚本

时间:2019-12-05 13:25:27  来源:  作者:

本人在写脚本重启动过程遇到坑,分享给大家,避免大家误入同样的坑。

需求:编写Squid重启动脚本。每天夜间12定时重启动

  • 重启脚本思路: 1、停止服务进程,kill 可以搞定 2、启动进程,知道服务如何启动即可

问题现象(坑):执行任务并不能重启动。kill 进程后,直接停止了。不执行后续启动服务命令

  • 脚本:
[root@test scripts]# more squid.sh 
#!/bin/bash 
source /etc/profile
kill -9 $(ps -ef |grep "squid" |grep -v "grep" |awk '{print $2}')
ps aux |grep squid
sleep 1
/usr/sbin/squid -f /etc/squid/squid.conf
ps aux |grep squid

进程图

 

Linux如何快速编写重启动脚本

 

 

  • 执行脚本,重启动提示killd错误
[root@test scripts]# sh -x squid.sh 
+ source /etc/profile
++ '[' -x /usr/bin/id ']'
++ '[' -z 0 ']'
+++ /usr/bin/id -un
++ USER=root
++ LOGNAME=root
++ MAIL=/var/spool/mail/root
++ '[' 0 = 0 ']'
++ pathmunge /usr/sbin
...
...
+++ alias 'which=alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
++ unset i
++ unset -f pathmunge
+++ whoami
++ export 'HISTTIMEFORMAT=%F %T root '
++ HISTTIMEFORMAT='%F %T root '
+ stop
++ ps -ef
++ grep --color=auto squid
++ grep --color=auto -v grep
++ awk '{print $2}'
+ kill -9 15556 15561 15565 16376 16397
Killed

问题原因

由于执行squid.sh 脚本时,直接将当前shell脚本一起kill 掉了。造成后续启动服务命令没有执行。

 

Linux如何快速编写重启动脚本

 

 

解决方法

  • 方法一:更换脚本名称,将squid.sh 修改为test.sh 。程序运行正常(能够正常启动) 主要是因为上面脚本,查找关键字"squid"时,直接将脚本自身也kill掉了。

 

Linux如何快速编写重启动脚本

 

 

  • 方法二: 修改脚本
#!/bin/bash 
source /etc/profile
kill -9 $(ps -ef |grep "/usr/sbin/squid -f /etc/squid/squid.conf" |grep -v "grep" |awk '{print $2}')
kill -9 $(ps -ef |grep "/var/log/squid/access.log" |grep -v "grep" |awk '{print $2}')
ps aux |grep squid
sleep 1
/usr/sbin/squid -f /etc/squid/squid.conf
echo "squid is restart $(date)" >> /data/logs/squid.log

 

Linux如何快速编写重启动脚本

 

 

总结

  • 进程重启动, 定位服务时,一定要精确定位。不要使用模糊匹配。匹配不好就入坑。


Tags:Linux 脚本   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
本人在写脚本重启动过程遇到坑,分享给大家,避免大家误入同样的坑。需求:编写Squid重启动脚本。每天夜间12定时重启动 重启脚本思路: 1、停止服务进程,kill 可以搞定 2、启动进程,...【详细内容】
2019-12-05  Tags: Linux 脚本  点击:(110)  评论:(0)  加入收藏
▌简易百科推荐
作用显示文件或目录所占用的磁盘空间使用命令格式du [option] 文件/目录命令功能显示文件或目录所占用的磁盘空间一些写法的区别du -sh xxx 显示总目录的大小,但是不会列出...【详细内容】
2021-12-23  mitsuhide1992    Tags:du命令   点击:(12)  评论:(0)  加入收藏
什么是linux内核linux就像是一个哲学的最佳实践。如果非要对它评价,我真的不知道该怎么赞叹,我只能自豪地说着:“linux的美丽简直让人沉醉。”我只能说是我处在linux学习的修炼...【详细内容】
2021-12-23  linux上的码农    Tags:linux内核   点击:(15)  评论:(0)  加入收藏
本文将比较 Linux 中 service 和 systemctl 命令,先分别简单介绍这两个命令的基础用法,然后进行比较。从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 service服务(dae...【详细内容】
2021-12-23  软件架构    Tags:systemctl   点击:(14)  评论:(0)  加入收藏
mv是move的缩写,可以用来移动文件或者重命名文件名,经常用来备份文件或者目录。命令格式mv [选项] 源文件或者目录 目标文件或者目录命令功能mv命令中第二个参数类型的不同(...【详细内容】
2021-12-17  入门小站    Tags:mv命令   点击:(23)  评论:(0)  加入收藏
大数据技术AI Flink/Spark/Hadoop/数仓,数据分析、面试,源码解读等干货学习资料 98篇原创内容 -->公众号 Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处...【详细内容】
2021-12-17  仙风道骨的宝石骑士    Tags:sed命令   点击:(22)  评论:(0)  加入收藏
Node是个啥?  写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性地拿了下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段...【详细内容】
2021-12-15  linux上的码农    Tags:node   点击:(25)  评论:(0)  加入收藏
难道只有我一个人觉得Ubuntu的unity桌面非常好用吗?最近把台式机上面的Ubuntu 16.04格式化了,装了黑苹果用了一周,不得不说,MacOS确实很精美,软件生态比Linux丰富很多,比Windows简...【详细内容】
2021-12-14  地球末日村    Tags:ubuntu   点击:(41)  评论:(0)  加入收藏
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行net...【详细内容】
2021-12-13  窥镜天    Tags:Linux netstat   点击:(28)  评论:(0)  加入收藏
对于较多数量的文件描述符的监听无论是select还是poll系统调用都显得捉襟见肘,poll每次都需要将所有的文件描述符复制到内核,内核本身不会对这些文件描述符加以保存,这样的设计...【详细内容】
2021-12-13  深度Linux    Tags:Linux   点击:(19)  评论:(0)  加入收藏
今天,我们来了解下 Linux 系统的革命性通用执行引擎-eBPF,之所以聊着玩意,因为它确实牛逼,作为一项底层技术,在现在的云原生生态领域中起着举足轻重的作用。截至目前,业界使用范...【详细内容】
2021-12-10  架构驿站    Tags:eBPF   点击:(29)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条