linux - Bash 脚本检查进程是否正在运行并读取用户输入以在必要时启动

标签 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 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    

发生了什么?

最佳答案

如果您要使用 & 终止命令并将其置于后台,也不要使用另一个分号 ; 终止它:

[Yy]*) nohup iperf -s > /dev/null 2>&1& break;;

以前

2>&1&;

关于linux - Bash 脚本检查进程是否正在运行并读取用户输入以在必要时启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18565002/

相关文章:

c - 如何在linux中用c在文件中打洞以删除数据

linux - 如何在 Linux Ubuntu 13 中创建 CSR(证书签名请求)文件?

linux - 如何使用 shell 更改 alsa 特定设备的音量?

linux - 为什么我的 bash 脚本在空白处中断?

windows - PowerShell 3 的文件扩展名

linux - 在 OpenSuSE(或一般的 linux)上,非服务启动脚本应该放在哪里?

c - VirtualBox 如何处理 guest Linux 的中断?

linux - 如何递归删除目录中所有文件中的插入符号(^)字符?

arrays - JSON 列表(不是对象)到 Bash 数组?

bash - POSIX 和 Bash 脚本