首页 > 代码库 > 把ps -ef & kill指令写成可以自动执行的shell脚本
把ps -ef & kill指令写成可以自动执行的shell脚本
之前重启服务器上的服务,均是先使用ps -ef | grep xxx指令查询出PID,然后再使用kill -9 PID指令杀死进程。由于重启的服务只止一个,每次都要重复输入,甚是麻烦。
示例
今天研究了一下,把以上手动查杀、重启服务的过程写成了shell脚本,重启服务只需执行脚本就可以了。附脚本样例:
1 #!/bin/sh 2 3 # restart das-web 4 ps -ef | grep /home/***/das-web/ | awk ‘{print $2}‘ | xargs -n 1 kill -9 5 6 # restart apache1 7 ps -ef | grep /usr/local/apache-tomcat-6.0.37/ | awk ‘{print $2}‘ | xargs -n 1 kill -9 8 9 # restart apache2 10 ps -ef | grep /usr/local/apache-tomcat-6.0.37-2/ | awk ‘{print $2}‘ | xargs -n 1 kill -9 11 12 # restart jetty 13 ps -ef | grep com.***.open.JettyServer | awk ‘{print $2}‘ | xargs -n 1 kill -9 14 15 ps -ef | grep java | awk ‘{print $2}‘ | xargs -n 1 kill -9 16 17 cd /home/***/das-web/bin/ 18 /home/***/das-web/bin/startup.sh 19 20 cd /usr/local/apache-tomcat-6.0.37/bin/ 21 /usr/local/apache-tomcat-6.0.37/bin/startup.sh 22 23 cd /usr/local/apache-tomcat-6.0.37-2/bin/ 24 /usr/local/apache-tomcat-6.0.37-2/bin/startup.sh 25 26 cd /home/***/CaijingOpen/bin/ 27 /home/***/CaijingOpen/bin/run.sh
说明
在shell脚本中调用另一个脚本的三种不同方法:
-
/dir/script.sh
fork是最普通的, 就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本。运行的时候开一个sub-shell执行调用的脚本,sub-shell执行的时候, parent-shell还在。sub-shell执行完毕后返回parent-shell. sub-shell从parent-shell继承环境变量.但是sub-shell中的环境变量不会带回parent-shell。
作者用的却是这种。 -
exec /dir/script.sh
exec与fork不同,不需要新开一个sub-shell来执行被调用的脚本. 被调用的脚本与父脚本在同一个shell内执行。但是使用exec调用一个新脚本以后, 父脚本中exec行之后的内容就不会再执行了。这是exec和source的区别 -
source /dir/script.sh
与fork的区别是不新开一个sub-shell来执行被调用的脚本,而是在同一个shell中执行. 所以被调用的脚本中声明的变量和环境变量, 都可以在主脚本中得到和使用。
xargs -n 1 表示每次传入一个参数,这里是PID。
awk表示执行后面的指令,在这里是获取PID列表。