如何测试Bash中是否存在进程?

时间:2013-10-10 00:11:38

标签: bash shell process .bash-profile

我希望确保在登录时node正在运行。所以在我的.bashrc文件中我有:

pkill node
sleep 1
node server.js &

当然,这不会检查node是否正在运行......它只会杀死它并再次启动它。相反,我想要这样的事情:

node_process = $(pidof node)
if [not_exists node_process]; then
  node server.js &
fi

问题是not_exists方法似乎不存在:)。如何测试Bash中是否存在数字或字符串,这是确保节点在登录时启动并运行的最佳方法吗?

1 个答案:

答案 0 :(得分:3)

您可以使用-z检查字符串是否为空:

node_process_id=$(pidof node)
if [[ -z $node_process_id ]]; then
    node server.js &
fi
如果找不到匹配的进程,则

pidof不返回任何内容,因此node_process_id将设置为空字符串。