當(dāng)我們以root執(zhí)行su時,su命令會以當(dāng)前shell進程為父進程來創(chuàng)建一個新的shell進程,這個shell進程是提供給我們所要su到的那個用戶使用的,而root的shell進程仍然存在,反過來也是一樣的,這就是你所問的問題的原因,因為之前那個用戶的shell進程還沒關(guān)閉,你可以使用exit退出一下,可以看到,并不是退出登錄了,而是回到之前的那個用戶去了。因為它們是父子進程的關(guān)系,子進程的結(jié)束當(dāng)然 不會影響到父進程的執(zhí)行了。但是我們?nèi)绻麖娦袣⑺栏高M程,那就直接退出了。 其實很多人并不了解,whoami和who am i的區(qū)別,他們的作用是不同的。
who am i 顯示當(dāng)前shell進程的實際用戶ID。 whomai 顯示當(dāng)前shell進程的有效用戶ID。 很多時候,這兩個輸出是一樣的,以至于我們以為這兩個命令的作用是相同的。
實例:root@yunhw-Aspire-4750G:~# who am i root pts/0 2011-12-10 13:13 (:0.0) root@yunhw-Aspire-4750G:~# whoami root root@yunhw-Aspire-4750G:~#ps -ef root 2939 2935 0 13:18 pts/0 00:00:00 bash root@yunhw-Aspire-4750G:~# su - yunhw yunhw@yunhw-Aspire-4750G:~$ who am i root pts/0 2011-12-10 13:13 (:0.0) yunhw@yunhw-Aspire-4750G:~$ whoami yunhw root@yunhw-Aspire-4750G:~#ps -ef root 2939 2935 0 13:18 pts/0 00:00:00 bash yunhw 2958 2939 0 13:19 pts/0 00:00:00 su - yunhw yunhw 2966 2958 7 13:19 pts/0 00:00:00 -su root@yunhw-Aspire-4750G:~#sudo kill -9 2939