ZBLOG

无法用 & 在后台执行一个脚本吗?

在 Linux/Unix 系统中,& 确实可以用于后台执行脚本,但可能会遇到以下问题或注意事项:


1. 基本用法(正确示例)

./your_script.sh &  # 将脚本放到后台执行
  • 效果:脚本会在后台运行,终端可继续输入命令。
  • 输出:脚本的 stdout/stderr 仍会打印到当前终端(若终端关闭,可能导致脚本被终止)。

2. 常见问题及解决方案

问题1:终端退出后脚本被终止

  • 原因:默认情况下,后台进程属于当前会话(session),终端关闭时会被 SIGHUP 信号终止。
  • 解决: “`bash nohup ./your_script.sh & # 忽略 SIGHUP 信号,输出重定向到 nohup.out 或 disown -h %1 # 将作业从会话中剥离(需先通过 jobs 查看作业号) 或 setsid ./your_script.sh & # 直接让脚本运行在新会话中 或

#### **问题2:需要完全脱离终端**
如果希望脚本完全脱离终端(包括输入输出):
```bash
nohup ./your_script.sh > /dev/null 2>&1 &
  • > /dev/null:丢弃标准输出。
  • 2>&1:将错误输出重定向到标准输出(同样丢弃)。

3. 更健壮的后台执行方式

推荐使用工具管理后台任务:

# systemd (Linux)
sudo vim /etc/systemd/system/your_service.service
# 内容示例:
[Unit]
Description=Your Script

[Service]
ExecStart=/path/to/your_script.sh
Restart=always

[Install]
WantedBy=multi-user.target

# Then:
sudo systemctl start your_service
sudo systemctl enable your_service

# tmux/screen (会话管理)
tmux new -s mysession
./your_script.sh
Ctrl+B D (分离会话)

4. Shell语法注意事项

  • & 必须放在命令末尾: “`bash 错误写法: & ./your_script.sh # Syntax error 正确写法: ./your_script.sh &


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23336

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?