Linux
bash 完成導致在 Ubuntu 14.04 上重新啟動
更新
set -x 似乎產生了一些有用的調試資訊。
systemctl
高度懷疑自己執行systemctl list-units --full --all
會導致相同的重新啟動。我想我會深入研究的。set -x service [TAB] ... etc/init.d/unattended-upgrades /etc/init.d/unscd /etc/init.d/urandom + shopt -u nullglob + COMPREPLY+=($( systemctl list-units --full --all 2>/dev/null | awk '$1 ~ /\.service$/ { sub("\\.service$", "", $1); print $1 }' )) ++ systemctl list-units --full --all ++ awk '$1 ~ /\.service$/ { sub("\\.service$", "", $1); print $1 }' Broadcast message from root@server (/dev/pts/1) at 12:02 ... The system is going down for reboot NOW! + COMPREPLY=($( compgen -W '${COMPREPLY[@]#${sysvdirs[0]}/}' -- "$cur" )) ++ compgen -W '${COMPREPLY[@]#${sysvdirs[0]}/}' -- '' + [[ -e /etc/mandrake-release ]] Connection to server.mydomain.net closed by remote host. Connection to server.mydomain.net closed.
我有一台執行 Ubuntu 14.04 並帶有最新更新檔的虛擬機。當我輸入
service
+$$ TAB $$機器立即重新啟動。其他 bash 完成似乎工作正常,例如:
ls [TAB]
. 只有完成 forservice
似乎是有問題的。系統日誌還沒有顯示任何明顯的東西。如果我解除安裝bash-completion
軟體包,問題就會消失。重新安裝它,問題又回來了。任何想法在哪裡尋找故障排除?
事實證明。管理員用
/bin/systemctl
包含單個命令的 shell 腳本替換了二進製文件reboot
。我不知道為什麼有人會這樣做,但由於已經有兩個人支持了這個問題,我想我會回答的。我什至不認為該命令是 14.04 的一部分(檢查了一些其他機器 - 它不存在)所以這更加奇怪。這裡值得注意的一點是,它
set -x
幫助我找到了問題所在。