检查进程是否正在运行Linux

时间:2015-08-20 04:13:20

标签: linux process

这是我的代码:

#!/bin/bash
ps cax | grep testing > /dev/null

while [ 1 ]
do
if [ $? -eq 0 ]; then
    echo "Process is running."
    sleep 10
else
    nohup ./testing.sh &
    sleep 10
fi

done

我将其作为nohup ./script.sh &

运行

它说nohup: failed to run command './script.sh': No such file or directory

有什么问题?

3 个答案:

答案 0 :(得分:2)

文件script.sh根本不存在于您发出命令的目录中 如果确实存在并且不可执行,您将得到:
`nohup:无法运行命令'./script.sh':权限被拒绝

答案 1 :(得分:0)

对于Linux上每个新创建的脚本,您应首先更改权限,因为您可以使用

查看权限详细信息
ls -lah

以下内容可能对您有所帮助:

#!/bin/bash

while [ 1 ];
do
date=`date`
pid=`ps -ef | grep "your process"  | grep -v grep | awk -F' ' '{print $2}'`
if [[ -n $pid ]]; then
    echo "$date - processID $pid is running."
else
    echo "$date - the process is not running"
    # script to restart your process
   say: start the process
fi

sleep 5m
done

答案 2 :(得分:-1)

确保您的脚本保存为script.sh 和你的执行nohup ./script.sh&来自script.sh的同一目录。 您也可以通过

为script.sh提供可执行权限
chmod 776 script.sh

nohup ./script.sh &

运行
nohup sh ./script.sh &