• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

工具践习

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

非阻塞的方式运行程序-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 表示)从当前终端会话中分离,这样即使关闭终端,作业也能继续运行。

posted on 2024-05-28 20:06  追梦的蒲公英  阅读(105)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3