日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shell (check return of each line)(PIPESTATUS[@])and sudoer

發布時間:2024/4/17 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell (check return of each line)(PIPESTATUS[@])and sudoer 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

shell result from cmdline

echo $?

if 0 then success ;else failure

(shell 執行每部返回值,rm -rf 錯誤,打包不能覆蓋)

?

我們知道,linux命令行上一個命令的退出碼放在了$?環境變變中,但是,如果這個命令是一串管道符連接和多個命令,怎么知道每個命令的退出碼?你可以 使用 PIPESTATUS環境變量。比如這個測試:true | false | true; echo "${PIPESTATUS[@]}"

?



解決sudo: sorry, you must have a tty to run sudo 前幾天遇到一個問題,在一個終端中調用另一個shell,始終是無法執行的,后來捕捉到報錯信息為sudo: sorry, you must have a tty to run sudo,后來,在網上了解到可以如下解決: 1. 編輯 /etc/sudoers 1)Defaults ? ?requiretty,修改為 #Defaults ? ?requiretty,表示不需要控制終端。 2)Defaults ? ?requiretty,修改為 Defaults:nobody !requiretty,表示僅 nobody 用戶不需要控制終端。 如果修改為 Defaults:%nobody !requiretty,表示僅 nobody 組不需要控制終端。 其實只要注釋掉)Defaults ? ?requiretty 那個就可以了。表示在執行的時候不打開終端。但是,有的shell必須要有終端才可以執行。這樣顯然是不行的。后來,又找到一片文章才搞定。下面為抄錄的,僅為記錄以后使用。 有些程序/腳本可能在沒有控制終端的環境下上執行(如系統啟動服務時, Daemon, 或者是setsid啟動的程序等) 但可能這個程序需要控制終端, 這這么辦呢? 如我們的例子: 我們在linux啟動時啟動一個服務, 可是中間有個程序(舊的systemtap)使用了sudo 但sudo需要控制終端(當然可以通過修改sudo的配置文件, 但這樣很對用戶不友好啊) 例子: (setsid 啟動的程序會失去控制終端) # setsid sudo ls sudo: sorry, you must have a tty to run sudo (如果你的系統沒有輸出這句話, 那就是你的系統的sudo配置文件允許sudo可以在這個, 請確保已經設置了Defaults ? ?requiretty) 沒有控制中斷的時候, 打開控制終端是這樣的效果: # setsid head -c 0 /dev/tty head: cannot open `/dev/tty' for reading: No such device or address 為了解決這個問題, 所以應該使用能創建(偽)控制終端的程序來啟動你的程序如: script, expect 如: # setsid script -c "sudo ls" /dev/null 或: # setsid expect -c 'spawn sudo ls; expect' #打開控制終端成功: # setsid script -c 'head -c 0 /dev/tty' /dev/null? # setsid expect -c 'spawn head -c 0 /dev/tty; expect' 不過 setsid 跟 script 組合使用有著奇怪的bug, 我這段時間非常的depression, 這樣對script, expect來說, 都是大材小用了

轉載于:https://www.cnblogs.com/SZLLQ2000/p/6210823.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的shell (check return of each line)(PIPESTATUS[@])and sudoer的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。