脚本将获得exec,并且NetworkManager将把参数传递给脚本。
我的一台笔记本电脑BIOS出现故障,我必须手动同步时间,并进行系统升级BTW。我正在使用脚本来自动执行此任务。 这是脚本: #!/ 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 window之前调用,以root身份运行)
user=$(who | grep "$DISPLAY" | awk '{print $1}' | tail -n1)
找不到登录用户名。但它适用于xterm。
有人可以帮忙吗?
我使用的是archlinux i686 + openbox + lxpanel
编辑: 我想找到真正的登录用户名,而脚本是由root运行的。
答案 0 :(得分:0)
您在寻找运行脚本的用户的名字吗?怎么样:
user=$( id -un )