shell中后台运行
# 背景
nohup的意思是“没有挂断”。 通常,当我们从系统注销时,所有正在运行的程序或进程都会挂起 (opens new window)或终止。 如果要在注销或退出Linux操作系统后运行任何程序,则必须使用nohup命令。 有许多程序需要很长时间才能完成。 我们不需要长时间登录来完成命令的任务。 我们可以使用nohup命令在后台运行这些类型的程序并稍后检查输出。 使用nohup命令的一些示例是内存检查,服务器重启,同步等。
# &
脚本准备:
testshell0.sh
#!/bin/bash
#trap "echo \"SIGHUP is received\"" 1
for i in {1..10000}; do
echo "$i: in $0"
1>&2 echo "$i: in $0"
sleep 1
done
1
2
3
4
5
6
7
2
3
4
5
6
7
testshell1.sh
#!/bin/bash
nohup ./testshell0.sh &
for i in {1..10000}; do
echo "$i: in $0"
sleep 1
done
1
2
3
4
5
6
2
3
4
5
6
运行:
./testshell0.sh &
1
# nohup配合&【推荐】
# 没有'&'的nohup命令
- 运行没有'&'的nohup命令时,它会在后台运行该特定命令后立即返回到shell命令提示符;
- 如果nohup命令中没有提到任何重定向文件名,则nohup命令的输出将在nohup.out中写入文件。
- 可以按以下方式执行该命令,以将输出重定向到output.txt文件。 检查output.txt的输出。
$ nohup bash sleep1.sh > output.txt
$ cat output.txt
1
2
2
# 带有'&'的nohup命令
nohup bash sleep1.sh &
1
nohup ./testshell0.sh &
1
$ tail -f nohup.out
1: in ./testshell0.sh
1: in ./testshell0.sh
2: in ./testshell0.sh
2: in ./testshell0.sh
3: in ./testshell0.sh
3: in ./testshell0.sh
1
2
3
4
5
6
7
2
3
4
5
6
7
# 参考链接
https://www.jianshu.com/p/747e0d5021a2
上次更新: 2022/04/15, 05:41:30