Linux Bash脚本检查进程是否正在运行,并在必要时读取用户输入以启动
在脚本中使用Linux Bash脚本检查进程是否正在运行,并在必要时读取用户输入以启动,linux,bash,shell,Linux,Bash,Shell,在脚本中使用nohup时出现问题。如果未使用nohup,脚本将正常工作 开始这个过程。运行时收到以下错误: ./iper.sh: line 16: syntax error near unexpected token `;' ./iper.sh: line 16: ` [Yy]*) nohup iperf -s > /dev/null 2>&1&; break;;' 以下是完整的脚本: #!/bin/bash echo "Checking to
nohup
时出现问题。如果未使用nohup
,脚本将正常工作
开始这个过程。运行时收到以下错误:
./iper.sh: line 16: syntax error near unexpected token `;'
./iper.sh: line 16: ` [Yy]*) nohup iperf -s > /dev/null 2>&1&; break;;'
以下是完整的脚本:
#!/bin/bash
echo "Checking to see if Iperf is running:"
sleep 2
ps cax | grep iperf > /dev/null
if [ $? -eq 0 ]; then
echo "Iperf is running."
else
echo "Iperf is not running."
fi
sleep 2
while true; do
read -p "Press Y to start Iperf or N to exit: " yn
case $yn in
[Yy]*) nohup iperf -s > /dev/null 2>&1&; break;;
[Nn]*) exit;;
esac
done
发生了什么事?我想你在
2>&1&
将其更改为
2>&1
如果要使用&
终止命令以将其置于后台,请不要使用另一个分号来终止命令代码>以及:
[Yy]*) nohup iperf -s > /dev/null 2>&1& break;;
以前
2>&1&;
检查下面的脚本
#!/bin/bash
echo "Checking to see if Iperf is running:"
sleep 1
if `pgrep iperf >/dev/null 2>&1`
then
echo "iperf Running"
else
echo "iperf not Running"
fi
sleep 1
while true; do
echo "Do you wanna start Iperf (y/n)"
read -n 1 ch; p=`echo ${ch} | tr A-Z a-z`
case $p in
y)nohup iperf -s > /dev/null 2>&1 break;;
n)exit;;
*)continue;
esac
done
执行此命令后,它将等待用户按*ctrl+c*键出来
如果使用2>&1&(用于在没有用户干扰的情况下继续),则允许用户执行其他工作
在y)状态下更换下一行
nohup iperf -s > /dev/null 2>&1& break;;
脚本没有完成,如果我不使用nohup,脚本将运行。我的目标是启动Iperf,但让它在后台运行,并在我注销时继续运行。我很好奇为什么你编辑我的帖子而不先发表评论?我相信我清楚地解释了正在发生的事情。谢谢。额外的&is-so控件c是不需要的,我不想使用任何额外的输入。如果我不使用额外的&off,脚本将启动Iperf,但脚本没有完成以允许用户在shell上输入。谢谢你的意见,非常感谢!它现在如我所希望的那样工作。我应该已经抓住了,因为错误消息直接解释了问题。不幸的是,我还没有足够的声誉,所以我不能投票支持你的答案。