我需要知道進程是否來自用戶。 我使用這個代碼:如何知道進程是bash中的用戶還是root用戶
#c is the PID
Aid=$(cat /proc/$c/status | grep -e ^Uid)
Uid="Uid: 0 0 0 0"
if [ "$Aid" != "$Uid" ]; then
echo "is from user"
fi
但我不是很舒服的字符串中的「標籤」,我認爲,也許可能會導致一些意外行爲。
有沒有其他方法可以做到這一點?
我需要知道進程是否來自用戶。 我使用這個代碼:如何知道進程是bash中的用戶還是root用戶
#c is the PID
Aid=$(cat /proc/$c/status | grep -e ^Uid)
Uid="Uid: 0 0 0 0"
if [ "$Aid" != "$Uid" ]; then
echo "is from user"
fi
但我不是很舒服的字符串中的「標籤」,我認爲,也許可能會導致一些意外行爲。
有沒有其他方法可以做到這一點?
你可以得到一定的PID的UID不使用ps -o uid= -p $pidhere
解析:
mypid=1
if uid=$(ps -o uid= -p "$mypid")
then
if [[ $uid -eq 0 ]]
then
echo "The process runs as root"
else
echo "The process runs as something else"
fi
else
echo "The process doesn't exist"
fi
等待我想我誤解了這個問題。你想獲得某個PID的UID,而不是你的腳本? –
是的,來自任意進程。 – exsnake
你可以在'/ proc/'上使用'stat'系統調用嗎?但是製表符分隔的字符串是合理匹配的,因爲如果它在'/ proc'中,你不會被用戶輸入絆倒。 –
Sobrique