【问题标题】:Start and stop multiple processes at once (Ubuntu)一次启动和停止多个进程(Ubuntu)
【发布时间】:2014-05-03 14:33:02
【问题描述】:

所以我的 Ubuntu 服务器上有一堆混合脚本,我想一次性运行它们,保留 PID 以便我可以一次将它们全部杀死。它们是混合的 ruby​​ 和 python 脚本,这无关紧要,因为它只是一个运行和保存 PID 的命令列表,我只是不知道如何。是否可以将脚本设置为 ./script start|stop|restart?

谢谢

【问题讨论】:

  • 为每个脚本编写一个初始化脚本,最好将它们放在/etc/init.d/ 中。看看/etc/init.d/apache2(或那里的任何其他脚本)以获得一个粗略的想法。

标签: python ruby shell ubuntu scripting


【解决方案1】:

让所有脚本从 shell 脚本运行

vi Main.sh

#/bin/ksh

MODE=$1

if [ $MODE = "start" ]; then
#get PID of main sacript
echo " Main PID: $!" >> PID.txt

#Run first script
./script1.sh &
#save PID of script one
echo "script 1 PID: $!" >> PID.txt

#Run second script
./script2.sh &
#save PID of script one
echo "script 2 PID: $!" >> PID.txt

and so on...

fi

if [ $MODE = "stop" ]; then

Total_PID=`wc -l PID.txt|cut -d " " -f1`
x=1

while [ $x -le $Total_PID ]
do
PID=`sed -n ${x}p PID.txt|awk -F ":" '{print $2}'`
kill -9 $PID
let x=$x+1
done


fi

这只是一个想法...您可以根据您的要求对其进行修改,这可能会有一些语法错误(因为这未经测试及其 pesdocode)...请更正它...您将运行此脚本作为

./Main.sh start

./Main.sh stop

【讨论】:

  • 我对 bash 一无所知,恐怕我无法纠正它。
  • 如果您只需将 ./scriptN.sh & 替换为运行脚本并将 Main.sh 文件的权限更改为 chmod +x Main.sh 的命令,此脚本就可以工作
  • 随机的“fi”重要吗?
  • 是的 fi 非常重要...它是关闭 if 循环的指标...换句话说,它是条件循环 if 的一部分。
  • 这会在 nohup 模式下运行 ruby​​ script.rb 之类的东西吗?运行后我能否在不关闭的情况下使用控制台?
猜你喜欢
  • 1970-01-01
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多