/etc/NetworkManager/dispatcher.d中的腳本將得到exec,參數將通過NetworkManager傳遞給腳本。NetworkManager調度程序腳本
我的一臺筆記本電腦BIOS出現故障,我不得不手動同步時間,並做系統升級順便說一句。我正在使用腳本來自動執行此任務。 這裏的腳本: #/ bin/sh的
IF=$1
STATUS=$2
if [ "$STATUS"x != 'up'x -o "$(date +%Y)" -gt "2012" ] ;then
exit
fi
logger "==$0=="
wait_for_process(){
PNAME=$1
PID=`pgrep $PNAME`
while [ -z "$PID" ];do
logger "waiting $1 running for another 3 sec.."
sleep 3;
PID=`pgrep $PNAME`
done
logger "$1 is running!"
}
wait_for_process nm-applet
wait_for_process lxpanel
export DISPLAY=$(echo $DISPLAY | cut -c -2)
if [ -z $DISPLAY ];then
export DISPLAY=:0
fi
#below cmd will yield null string for $user
user=$(who | grep "$DISPLAY" | awk '{print $1}' | tail -n1)
#so I have to hardcode the user name:(
user=xxx
export XAUTHORITY="/home/$user/.Xauthority"
logger "Display $DISPLAY user $user"
su $user -c "xterm -e 'sudo /usr/bin/ntpd -qdg && sudo yaourt -Syua' &" || logger "cannot run xterm"
(腳本X窗口之前調用,以root身份運行)
user=$(who | grep "$DISPLAY" | awk '{print $1}' | tail -n1)
找不到登錄用戶名。但它在xterm中有效。 有人可以幫忙嗎?
我現在用的archlinux爲i686 +的openbox + lxpanel
編輯: 我想找到真正的登錄用戶名,而腳本由root身份運行。
很多混亂和缺少一個真實的用例。一方面,你似乎想獲得(活動)用戶會話列表,另一方面,你似乎期望它在會話開始之前工作,這只是無稽之談。除非問題被修改爲合理,否則這裏沒什麼幫助。 – 2014-04-26 18:12:43