栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Linux / Unix命令以确定进程是否正在运行?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux / Unix命令以确定进程是否正在运行?

尽管

pidof
pgrep
是确定正在运行的工具的绝佳工具,但不幸的是,它们在某些操作系统上均不可用。确定的故障保护将使用以下内容:
ps cax |grep command

Gentoo Linux上的输出:

14484?S 0:00 apache214667吗?S 0:00 apache219620?SL 0:00 apache221132?SS 0:04 apache2

OS X上的输出:

42582 ?? Z 0:00.00(smbclient)46529 ?? Z 0:00.00(smbclient)46539 ?? Z 0:00.00(smbclient)46547 ?? Z 0:00.00(smbclient)46586 ?? Z 0:00.00(smbclient)46594 ?? Z 0:00.00(smbclient)

在Linux和OS X上,grep都会返回退出代码,因此很容易检查是否找到了该进程:

#!/bin/bashps cax | grep httpd > /dev/nullif [ $? -eq 0 ]; then  echo "Process is running."else  echo "Process is not running."fi

此外,如果您想要PID的列表,也可以轻松地对这些ID进行grep:

ps cax | grep httpd | grep -o'^ [] * [0-9] *'

在Linux和OS X上,其输出相同:

3519 3521 3523 3524

以下内容的输出为空字符串,使该方法对于未运行的进程而言是安全的:

回声 ps cax | grep aasdfasdf | grep -o '^[ ]*[0-9]*'

这种方法适用于编写简单的空字符串测试,然后甚至遍历发现的PID。

#!/bin/bashPROCESS=$1PIDS=`ps cax | grep $PROCESS | grep -o '^[ ]*[0-9]*'`if [ -z "$PIDS" ]; then  echo "Process not running." 1>&2  exit 1else  for PID in $PIDS; do    echo $PID  donefi

您可以通过将其保存到具有执行许可权(chmod + x running)的文件(名为“ running”)中并使用以下参数来对其进行测试:

./running "httpd"

#!/bin/bashps cax | grep httpdif [ $? -eq 0 ]; then  echo "Process is running."else  echo "Process is not running."fi

警告!!!

请记住,您只是在解析输出,

psax
这意味着从Linux输出中可以看出,它不仅与进程匹配,而且还传递给该程序的参数。我强烈建议在使用此方法时尽可能具体(例如
./running"mysql"
也将匹配“ mysqld”进程)。我强烈建议
which
在可能的情况下使用来检查完整路径。


参考文献:

http://linux.about.com/od/commands/l/blcmdl1_ps.htm

http://linux.about.com/od/commands/l/blcmdl1_grep.htm



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/405576.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号