【问题标题】:Bash script to kill all programs and restart them after a minuteBash 脚本杀死所有程序并在一分钟后重新启动它们
【发布时间】:2016-01-15 17:30:11
【问题描述】:

我需要编写一个 bash 脚本来杀死在 Linux 服务器上运行的所有程序,然后重新启动它们,最好在一分钟后。

我是 bash 脚本的新手。请帮忙。

【问题讨论】:

  • 所有程序?为什么不直接重启?
  • 欢迎来到 Stack Overflow。请编辑您的帖子并包含您迄今为止尝试过的内容。
  • 小心不要杀死运行 linux 操作系统所需的程序。在重新启动程序时,您需要知道程序是用什么编程语言创建的,以便重新启动它们成功

标签: linux bash server


【解决方案1】:

杀死所有程序会......不好......就像系统崩溃一样。但如果你愿意的话:

#!/bin/bash

processes=`ps aux -A --no-heading | grep -v "NameOfThisScript" | awk '{print $2}'`

for i in $processes; do
    sudo kill -9 $i
done

糟糕,忘记了重启它们的部分......

【讨论】:

  • 那个时候,为什么不是telinit 1,然后是telinit 5? ;-)(另外,我永远不会以如此反复无常的方式使用-9。)
  • 我同意-9,但 OP 说他想杀死 ALL 程序。从逻辑上讲,这将包括那些本来会被阻止的。
  • 应该只将-9 用于行为不端的程序,而不是全部。最好发个term信号,然后sleep几秒,然后kill -9;这使程序有机会在您突然杀死它们之前清理并正常结束。
【解决方案2】:

您可能想要编写一个脚本来杀死您的服务。然后是启动它们的第二个脚本。将您的 crontab 设置为在第 n 分钟运行第一个脚本,然后在第 n+1 分钟运行第二个脚本。这应该清除现有程序并在一分钟后启动它们。

【讨论】:

  • 大多数服务都会有一个推荐的方法来关闭它们,甚至是一个 crontab-line 示例。 @user3270763 您可以尝试阅读您感兴趣的每项服务的文档;对于每个额外的文档/服务,概率接近 100%,其中至少有一个会为您提供满足您需求的“正确”答案,也许您会在这里找到更好的答案!
猜你喜欢
  • 2022-10-21
  • 1970-01-01
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多