如何在后台运行Shell脚本 ?
参考答案:
在后台运行Shell脚本有几种方法,以下是其中的几种:
- 使用
&符号: 在命令的末尾添加&符号,可以将命令放到后台执行。
./your_script.sh &
这样,即使你关闭了终端,脚本也会继续运行。但是,请注意,如果你关闭了终端会话,并且脚本需要与该会话进行交互(例如,读取输入或输出到终端),那么脚本可能会遇到问题。
2. 使用nohup命令:
nohup命令用于在后台运行命令,即使你关闭了终端。它还会将命令的输出重定向到一个文件(除非另外指定)。
nohup ./your_script.sh &
默认情况下,nohup会将输出重定向到名为nohup.out的文件。如果你想将输出重定向到另一个文件,可以使用重定向操作符>。
nohup ./your_script.sh > output.log &
- 使用
screen或tmux: 这些工具允许你创建多个终端会话,即使你关闭了原始的终端窗口,这些会话也会继续运行。你可以在screen或tmux会话中启动你的脚本,然后安全地断开连接。稍后,你可以重新连接到这些会话,查看脚本的进度或与其交互。
使用screen的示例:
screen -S mysession
./your_script.sh
# 按 Ctrl+A 然后按 D 来断开screen会话
之后,你可以使用screen -r mysession重新连接到该会话。
使用tmux的示例与screen类似,但命令和快捷键可能有所不同。
4. 使用disown命令:
如果你已经在前台启动了一个命令,但想将其放到后台,你可以使用Ctrl+Z暂停该命令,然后使用bg命令将其放到后台。接着,使用disown命令从作业列表中移除该作业,这样即使你关闭了终端,它也会继续运行。
^Z # 按 Ctrl+Z 暂停命令
bg # 将命令放到后台
disown # 从作业列表中移除该作业
选择哪种方法取决于你的具体需求和环境。如果你只是想简单地在后台运行一个脚本并不关心其输出,那么使用&或nohup可能就足够了。但如果你需要能够在稍后重新连接到该会话或与其交互,那么screen或tmux可能更合适。