配置遠程鏈接的時候出現報錯
Command finished with exit code 139
Execution was killed due to timeout
Failed to execute command Rsync command ‘rsync’ was not found neither in local PATH nor as full executable path Starting introspection for Python…
放假前好好的,放假后突然不行了。
鎖定問題
step1 我嘗試在本地 ssh / Xshell 登錄都可以運行命令,說明服務器是好的;
step2 然后pycharm連接A服務器,可以運行程序,說明pycharm本身沒有問題;
step3 有問題的只有pycharm連接B服務器,出現 報錯139,推斷:問題出在 PyCharm 用的登陸遠程解釋器時,觸發了B服務器的某些環境腳本 bug。
解決問題
chatgpt和deepseek左腳踩右腳的提問他們,評判對方的方法是否合理并可以解決問題,最后找到了一個保險的方法解決了。
(1)首先,確定服務器有沒有安裝 rsync。有輸出,說明安裝正常。
which rsync
(2)程序xshell運行代碼,必須能輸出一個路徑。
bash -l -c 'pwd' # 這個地方我出現了報錯139
/bin/bash --noprofile --norc -c 'pwd' # 這個地方我的輸出正常
加上 --noprofile --norc 后一切正常
所以真正的問題就是 PyCharm 默認用 bash -l,會加載 /etc/profile 和 /etc/profile.d/*.sh,而里面某個腳本(大概率是 /etc/profile.d/colorgrep.sh)在 非交互 login shell 下寫錯了邏輯,導致了崩潰 (exit 139)。
手工 ssh 登錄之所以沒事,是因為你得到的是 交互式 login shell,腳本執行路徑不一樣。
(3)修復服務器,守護模式判斷
備份服務器現有 .bashrc文件;
編輯 .bashrc,在最頂部插入 guard clause;
# --- PyCharm/SSH Guard Clause ---
case $- in*i*) ;;*) return ;;
esac
# --- End Guard Clause ---
保存退出,測試 PyCharm SSH Interpreter 或:
bash -l -c 'pwd'
不會再崩潰,exit 139 消失。