我在很多地方搜索過,但似乎無法得到正確的關鍵字。我在Sublime中的Python中有一個拖延的過程,導致Mac上的死亡沙灘球。我無法訪問工具>取消生成按鈕,並且Control + C不起作用。我如何殺死這個過程?無法在崇高文本中殺死一個python進程2
回答
我還沒有找到一種殺死Sublime中的進程而不殺死所有Sublime的方法。但是我確實找到了一種殺死和重新開啓崇高的方法,讓我們不那麼痛苦。這是我的方式。
- Command-option-escape:這將彈出強制退出窗口。
- 強制退出窗口會問你是否真的要退出崇高兩次。只需點擊輸入兩次。
- 一個撞機記者窗口將打開。我討厭這個窗口,因爲它漂浮在一切之上,所以你不能忽視它,關閉它使我做了額外的擊鍵,所以我disabled it.
- 重新打開崇高。當Sublime重新打開時,它會打開您在打開之前打開的所有文件,並將您帶回到原來的位置。
許多人認爲重新開放Sublime是一個痛苦的屁股,因爲他們必須用鼠標導航到應用程序目錄,這個過程大概需要10 - 30秒。我曾經覺得這很煩人,所以我把它設置好,這樣我就可以用五次擊鍵重新打開崇高的東西,而這需要我三秒左右。
首先,我安裝了Alfred。在這種情況下,你只需要免費版本的Alfred。
在安裝阿爾弗雷德,請執行下列操作:
- 選項,空格鍵可以調出阿爾弗雷德搜索欄。阿爾弗雷德很像谷歌搜索您的電腦。
- 鍵入字母「su」。在Alfred搜索欄下方,出現一堆選項,第一個選項是Sublime Text 2. Alfred自動突出顯示搜索結果列表上的第一項內容,這樣當您按Enter鍵時,它將啓動突出顯示的應用程序。
- 點擊進入。阿爾弗雷德打開崇高。 Voila:Sublime回到了你之前的劇本。
所以,在總,一旦我開始沒有響應崇高的過程,我做了以下10個按鍵:
Cmd的選項 - 逃逸進入輸入選項,空格鍵蘇進入
此過程時將強制退出應用程序窗口掛起來,因爲我沒有找到一個快速的方法來擺脫它,而無需向我的系統添加十個額外的按鍵。如果真的讓我感到困擾,我點擊窗口,然後執行cmd-w,關閉窗口。
另一個令人討厭的事情是,Sublime需要幾秒鐘才能重新啓動,所以通常我不打算從Sublime內部運行。相反,我轉到終端並在那裏運行,這樣我就可以按Ctrl-C測試腳本,而不會影響Sublime。
此外,還有一個鍵盤快捷鍵,用於工具>取消構建選項。我從來沒有使用它,但使用它並修復它的問題在this forum post.
感謝您的詳細回覆,雖然我希望能得到類似於控制檯+ c在終端中所做的一些事情。至少我並不孤單,認爲這是一個問題。 – user2483724
我在顯示屏的右下方打開「強制退出應用程序」。它從Tara的解決方案中刪除了一個步驟(命令轉義),並且在Sublime的右下角很少有任何代碼。 – Jack
中討論我發現了一個有趣的方法來解決這個問題。在
我的構建系統崇高-text2的打電話給我的Makefile其中有2個選項,並使用ONESHELL指令:
.ONESHELL:
run: myprogram
./myprogram &
echo $$! > "pid.tmp"
需要注意的是啓動我的程序後,它的PID是保存在一個文件中。 ,我有第二個選擇:
stop:
kill -9 `cat pid.tmp`
rm pid.tmp
此選項殺死由run
命令啓動的進程。
然後我配置我的編譯系統(工具 - >構建系統 - >新構建系統...),所以我可以訪問兩個選項:
{
"cmd": ["make"],
"variants":
[
{
"name": "Run",
"cmd": ["make", "run"]
},
{
"name": "Stop",
"cmd": ["make", "stop"]
}
]
}
但我想打電話給兩個從崇高的鍵綁定的選項,所以我編輯的文件「首選項 - >鍵綁定 - 用戶」看起來像這樣:
[
{ "keys": ["ctrl+r"], "command": "build", "args": {"variant": "Run"} },
{ "keys": ["alt+r"], "command": "build", "args": {"variant": "Stop"} }
]
現在,如果我按CTRL + R我的程序啓動(並進入無限循環)和WH我按alt + r我的程序停止,這幾乎是我想要的。
剩下的唯一問題是,當我跑alt + r我鬆散ctrl + r產生的輸出。
編輯: 其他辦法,我發現是我的啓動程序上的Makefile中一個新的xterm進程:
run:
xterm ./myprogram
我可以用CTRL + C關閉它,它不會停止工作的崇高。
這個答案是特定於python和windows。我不確定是否有一個mac等價物。
正在運行的python腳本可以從任務管理器中終止。使用Ctrl+Shift+esc
打開任務管理器。轉到processes
選項卡,並簡單地通過del
殺死python.exe
。這隻會終止腳本,並保持崇高不變。
對於OS X,您可以轉到活動監視器並找到進程「python」並強制退出該進程。請注意,這樣做會殺死我相信的所有python進程。 – Zizouz212
我已經將VGarcia的解決方案「移植」到了Python中。但是,如果您無論如何需要項目的Makefile,則應該使用Makefile方法。在VGarcia的解決方案
備註:
VGarcia的解決方案爲我工作不錯,但我必須在一行寫
./myprogram & echo $$! > "pid.tmp"
,否則存儲的PID將結束是空的。我想運行,所以我只是增加了一個構建目標
myprogram
之前建立二進制,不停的依賴run: myprogram
(我知道這應該是一個評論,但我沒有足夠的聲譽那我會讓它評論時,我可以。)
Python版本
編寫運行程序和存儲run.py腳本進程的PID(見https://docs.python.org/2/library/subprocess.html#subprocess.Popen):
from subprocess import Popen # prefer subprocess32 in Python 2 for Linux/OS X
# run process as child (still receive process output)
pid = Popen(['build/myprogram']).pid
# store pid
with open('pid.tmp', 'w') as f:
f.write(str(pid))
寫stop.py腳本來讀取PID並強行終止進程:
import os, signal
from subprocess import Popen
# read PID
with open('pid.tmp', 'r') as f:
pid = f.readline().rstrip()
# kill process
os.kill(int(pid), signal.SIGKILL)
# remove temp file
os.remove('pid.tmp')
配置構建:
{
"name": "Python Build",
// adapt for your project
"cmd": [my_build_cmd],
"working_dir": "$project_path",
"variants":
[
{
"name": "Run",
"cmd": ["python", "run.py"],
},
{
"name": "Stop",
"cmd": ["python", "stop.py"],
}
]
}
或者,您可以將所有功能放在一個模塊中,並通過解析main()
中的一些參數調用不同的方法run
和stop
。
改進建議1(沒有嘗試過我自己)
您可能希望重新使用您的腳本不同的項目。在這種情況下:
將腳本更改爲帶參數的函數。您可能至少需要
def run(bin_path)
。將腳本放在您可以從任何項目輕鬆訪問的地方。在您的崇高項目中,將生成配置置於
build_systems
條目中(值爲列表,請參見https://www.sublimetext.com/docs/2/projects.html,有點舊但可用)。您可以直接使用"cmd": ["python", "-c", "from script import run; run(bin_path)"]
來調用函數,也可以使用main()
,如上所示。
改進建議2(沒有嘗試過我自己)
如果通過多個進程同時運行的程序(意外或測試一些網絡功能),該stop
程序只殺最後一個處理。您可以調整算法以在臨時文件中存儲多個PID,然後相應地終止每個進程。
您也可以使用Makefile方法作爲shell腳本執行此操作。無論如何,一定要選擇一種你感到輕鬆的語言。
在SublimeText3中,有一個鍵盤快捷鍵,用於工具>取消構建:^C
。如果在構建日誌中單擊並輸入control + C,它將停止構建並顯示消息[Cancelled]
。
該程序不會停止,我試過了:(((看看任務管理器 – ytpillai
啓動任務管理器或任何您的計算機上的進程管理器(如果你沒有,得到一個)。刪除相應的python.exe和pythonw。exe程序
我有同樣的問題,我只需要處理來自Sublime Text的程序中的SIGTERM信號。 https://github.com/SublimeTextIssues/Core/issues/1049
- 1. 無法在Python中殺死airodump進程
- 2. 殺死一個python進程
- 3. 無法殺死Python腳本
- 4. 無法殺死Postgres進程
- 5. c#無法殺死進程
- 6. Autohotkey無法殺死進程
- 7. 無法殺死ipython進程
- 8. 如何在殺死一個php腳本時殺死passthru進程?
- 9. Shell腳本無法殺死進程
- 10. 無法在SQL 2008中殺死進程
- 11. 在C中殺死一個pthread而不殺死整個進程
- 12. 在Linux上運行的python腳本中殺死一個進程
- 13. 殺死一個mpi進程
- 14. 在linux中殺死一個進程
- 15. 在C中殺死一個進程#
- 16. 殺死進程殺死其他進程
- 17. 高級任務殺手如何殺死一個進程?
- 18. Python - 不能殺死進程
- 19. 而不殺死Python進程
- 20. 用python殺死進程
- 21. 在python中用ppid殺死進程?
- 22. 在崇高的文本2
- 23. PYTHONPATH在崇高文本2的Python過程中
- 24. 在一個文件中多個片段崇高文本2
- 25. 用Python設置崇高文本2?
- 26. 無法殺死進程的Ubuntu 14.04
- 27. 無法殺死節點JS進程
- 28. 無法殺死其他進程
- 29. 無法殺死殭屍進程kill -9
- 30. 無法殺死使用Process.destroy()的進程
當你找到了解決方案:
還有,如果你開始時,舊的仍在運行新的版本與此相關的一個bug,當你打印的東西終端只終止進程,您可以添加語法錯誤並再次運行該程序,以便它自動停止。 – ytpillai