如何在后台运行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
可能更合适。