非阻塞的方式运行程序-shell
(含chatgpt4创作)
方法对比
- 方法 1 最简洁,适用于大多数情况。
- 方法 2 更强大,适用于需要长时间运行且即使关闭终端也需要继续运行的脚本。
- 方法 3 可以将已在后台运行的作业分离,更加灵活。
1. 使用&和>/dev/null
[你要执行的命令] &>/dev/null &
# 例
python 1.py &>/dev/null &
- & (后台运行): 将命令放到后台运行,使得终端不会被阻塞,可以继续执行其他命令。
>/dev/null (重定向标准输出): 将标准输出重定向到 /dev/null,这是一个特殊的设备文件,会丢弃所有写入其中的数据,从而忽略脚本的输出。- & (后台运行): 将重定向操作也放到后台运行,避免输出重定向信息干扰终端。
2. nohup 关闭中断/终端会话结束,命令仍可运行
nohup [你要执行的命令] >/dev/null 2>&1 &
# 例
nohup python 1.py >/dev/null 2>&1 &
- nohup (忽略挂起信号): 即使关闭终端或终端会话结束,脚本也能继续在后台运行。
>/dev/null (重定向标准输出): 将标准输出重定向到 /dev/null,这是一个特殊的设备文件,会丢弃所有写入其中的数据,从而忽略脚本的输出。。- 2>&1 (重定向标准错误到标准输出): 将标准错误输出也重定向到 /dev/null,确保所有输出都被忽略。
- & (后台运行): 将命令放到后台运行,使得终端不会被阻塞,可以继续执行其他命令。。
使用disown (未实际使用过)
[你要执行的命令] &
disown %1
- [你要执行的命令] & (后台运行): 同上。
- disown %1 (将作业从终端会话中分离): 将最后一个后台作业(用 %1 表示)从当前终端会话中分离,这样即使关闭终端,作业也能继续运行。
浙公网安备 33010602011771号