下面的示例統(tǒng)一使用這個(gè)每秒打印一次時(shí)間的簡(jiǎn)單腳本:
[root@VM_139_74_centos shell]# cat 10s.sh
#!/bin/bash
for ((i = 0; i < 10; i++)); do
echo $(date)
sleep 1
done
正常執(zhí)行命令時(shí)linux命令,會(huì)阻塞終端,同時(shí)將所有輸出信息打印到終端:
[root@VM_139_74_centos shell]# ./10s.sh
Wed May 30 11:32:13 CST 2018
Wed May 30 11:32:14 CST 2018
Wed May 30 11:32:15 CST 2018
Wed May 30 11:32:16 CST 2018
Wed May 30 11:32:17 CST 2018
Wed May 30 11:32:18 CST 2018
Wed May 30 11:32:19 CST 2018
Wed May 30 11:32:20 CST 2018
Wed May 30 11:32:21 CST 2018
Wed May 30 11:32:22 CST 2018
[root@VM_139_74_centos shell]#
注意,Linux 終端中執(zhí)行的命令的輸出是可以有緩存的。有時(shí)候命令執(zhí)行完了,但是輸出的信息并不完整,這時(shí)候再需要敲其他命令(例如 Ctrl + c)清空緩存。
命令后面有 & 時(shí),這個(gè)命令將會(huì)在后臺(tái)運(yùn)行。但是輸出信息仍會(huì)打印到終端,但是此時(shí)可以接受其他命令:
[root@VM_139_74_centos shell]# ./10s.sh &
[1] 17257
[root@VM_139_74_centos shell]# Wed May 30 11:32:30 CST 2018
Wed May 30 11:32:31 CST 2018
Wed May 30 11:32:32 CST 2018
Wed May 30 11:32:33 CST 2018
Wed May 30 11:32:34 CST 2018
Wed May 30 11:32:35 CST 2018
Wed May 30 11:32:36 CST 2018
Wed May 30 11:32:37 CST 2018
Wed May 30 11:32:38 CST 2018
Wed May 30 11:32:39 CST 2018
nohup ./10s.sh &
[2] 17290
[1] Done ./10s.sh
[root@VM_139_74_centos shell]# nohup: ignoring input and appending output to ‘nohup.out’
& 特點(diǎn)如下:
對(duì)于第一個(gè)問(wèn)題,可以在命令前添加 nohup(no hang up)解決:
nohup your-command &
第二個(gè)問(wèn)題可以使用輸出重定向?qū)⑤敵鲋囟ㄏ虻轿募?/p>
your-command > out.file 2>&1 &
2>&1 表示標(biāo)準(zhǔn)錯(cuò)誤輸出重定向等同于標(biāo)準(zhǔn)輸出,因?yàn)橹皹?biāo)準(zhǔn)輸出已經(jīng)重定向到了空設(shè)備文件,所以標(biāo)準(zhǔn)錯(cuò)誤輸出也重定向到空設(shè)備文件。如果不重新定向 cron 作業(yè)的輸出為標(biāo)準(zhǔn)輸出或標(biāo)準(zhǔn)錯(cuò)誤,cron 守護(hù)進(jìn)程就會(huì)通過(guò)電子郵件告知您任何命令輸出或錯(cuò)誤。如果不重新定向cron作業(yè)的輸出為標(biāo)準(zhǔn)輸出或標(biāo)準(zhǔn)錯(cuò)誤,cron守護(hù)程序就會(huì)通過(guò)電子郵件告知您任何命令輸出或錯(cuò)誤。