gpt4 book ai didi

linux - 如何检查shell脚本是否在服务器中运行

转载 作者:太空宇宙 更新时间:2023-11-04 10:59:57 25 4
gpt4 key购买 nike

我在服务器中运行一个 shell 脚本,命令行参数如下。

./xyz.sh DD 10 20 

我想在脚本中编写一些检查代码,它将检测服务器中是否正在运行相同的脚本。如果它正在运行,那么它不会运行,否则它会运行。注意对于同一脚本的不同运行,命令行参数可能不同。

欢迎就此提供任何帮助。

最佳答案

您可以通过多种方式检查程序是否正在运行。

检查正在运行的程序同名

pidof xyz

这将打印名为“xyz”的每个程序的 pid,如果找到 pid,则返回退出代码 0,返回 1如果没有(所以如果你只想知道程序是否正在运行,你只需要检查该命令的退出代码)。

如果你没有pidof:

ps aux | grep xyz.sh | grep -v grep

并检查输出是否为空。

更可靠的解决方案

如果您想要更复杂的东西(将检查脚本是否正在运行,而不仅仅是具有相同名称的东西),解决方案通常是创建一个 pid 文件:

在脚本的开头,检查文件 /var/run/xyz.pid 是否存在。如果它存在,那么程序已经在运行。如果没有,则创建它并继续正常执行。在脚本正常执行结束时,删除文件。

您可以在创建 xyz.pid 文件时写入脚本的 pid。这样,如果用户想要停止正在运行的脚本而不是自己终止它,他们可以使用诸如 --stop 之类的选项再次调用脚本。然后您的脚本可以读取 .pid 文件并正确终止它(例如,通过发送信号要求它正常关闭)。

这是很多服务(例如一些 http 服务器)的工作方式。

关于linux - 如何检查shell脚本是否在服务器中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27354977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com