您好,登錄后才能下訂單哦!
經(jīng)常有這樣的需求,寫一個python文件,之后把這個python做成定時任務形式,按要求定時crontab執(zhí)行!
而定時任務經(jīng)??吹饺缦赂袷?,譬如我下面這個每三分鐘執(zhí)行一次,而且把python的輸出信息每次記錄到log日志里面!常用的是
[root@nessus?allpython2019]#?crontab?-e */3?*?*?*?*?/usr/bin/python?/root/allpython2019/1-FtpSwDownloadcfg20191101.py?>>?/root/allpython2019/run.log?2>&1 [root@nessus?allpython2019]#
那么這個2>&1 究竟是什么呢?
其實網(wǎng)上很多博文都解釋了,如下:
run.log 2>&1 含義參考https://blog.csdn.net/liupeifeng3514/article/details/79711694
? 解答:command > a? 2>&1 【command >> a? 2>&1】這條命令,可以理解為執(zhí)行 command 產(chǎn)生的標準輸入重定向到文件 a 中,標準錯誤也重定向到文件 a 中?。╝可以是文件run.log或者/dev/null 空設備文件)【如果不這樣寫 可能只有標準輸出打印到log文件去了? 而stderr并沒有被重定向到log中,stderr被打印到了屏幕上】
下面是我的測試:
(1)測試不加入2>&1 stderr并沒有被重定向到log中,stderr被打印到了屏幕上
(2)測試加入2>&1 stderr也被重定向到log中了
(3)測試常用定時crontab執(zhí)行時候command > a? 2>&1 和command >> a? 2>&1這2條命令區(qū)別,即一個覆蓋!一個是追加!我常用追加!
幾個基本符號及其含義: /dev/null?表示空設備文件; 0?表示stdin標準輸入; 1?表示stdout標準輸出; 2?表示stderr標準錯誤。 例如我寫了下面這個測試程序【這里我們弄了兩條命令,其中t指令并不存在,執(zhí)行會報錯,會輸出到stderr。date能正常執(zhí)行,執(zhí)行會輸出當前時間,會輸出到stdout?!?[root@nessus?allpython2019]#?vim?test.sh #!/bin/sh t date ~ ~ ~ ~ "test.sh"?[新]?3L,?17C?已寫入????????????????????????????????????????????????????????? [root@nessus?allpython2019]#?chmod?+x?test.sh [root@nessus?allpython2019]#?./test.sh?>?res1.log ./test.sh:行2:?t:?未找到命令??????????????#--------可以看到不加入2>&1?stderr并沒有被重定向到log中,stderr被打印到了屏幕上 [root@nessus?allpython2019]#? [root@nessus?allpython2019]#?cat?res1.log? 2019年?11月?01日?星期五?10:01:47?CST [root@nessus?allpython2019]#? [root@nessus?allpython2019]#? [root@nessus?allpython2019]#?./test.sh?>?res2.log?2>&1?#--------可以看到加入2>&1?stderr也被重定向到log中了 [root@nessus?allpython2019]#? [root@nessus?allpython2019]#? [root@nessus?allpython2019]#?cat?res2.log? ./test.sh:行2:?t:?未找到命令 2019年?11月?01日?星期五?10:03:08?CST [root@nessus?allpython2019]#? [root@nessus?allpython2019]#? [root@nessus?allpython2019]#?./test.sh?>?res2.log?2>&1??#---------------下面演示我們常用的>和>>區(qū)別,就是一個覆蓋!一個是追加! [root@nessus?allpython2019]#?cat?res2.log? ./test.sh:行2:?t:?未找到命令 2019年?11月?01日?星期五?10:03:24?CST [root@nessus?allpython2019]#? [root@nessus?allpython2019]#? [root@nessus?allpython2019]#?./test.sh?>>?res2.log?2>&1 [root@nessus?allpython2019]#?cat?res2.log? ./test.sh:行2:?t:?未找到命令 2019年?11月?01日?星期五?10:03:24?CST ./test.sh:行2:?t:?未找到命令 2019年?11月?01日?星期五?10:03:40?CST [root@nessus?allpython2019]#?./test.sh?>>?res2.log?2>&1 [root@nessus?allpython2019]#?cat?res2.log? ./test.sh:行2:?t:?未找到命令 2019年?11月?01日?星期五?10:03:24?CST ./test.sh:行2:?t:?未找到命令 2019年?11月?01日?星期五?10:03:40?CST ./test.sh:行2:?t:?未找到命令 2019年?11月?01日?星期五?10:03:44?CST [root@nessus?allpython2019]#? [root@nessus?allpython2019]#? [root@nessus?allpython2019]#
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。