Все знают, как убить программу с помощью диспетчера задач (Task Manager) в Windows или принудительного выхода (Windows or Force Quit) в OS X , но иногда бывает полезно закрыть программу с помощью командной строки (command line) . Я сталкивался с несколькими ситуациями, когда программа отказывалась завершаться через Диспетчер задач (Task Manager) , даже когда я пытался убить основной процесс. Force Quit имеет свои особенности и не всегда убивает программу так, как должна. Вот когда вы можете использовать силу командной строки (command line) .
В этой статье я рассмотрю команды для уничтожения программы в Windows , OS X и Linux (OS X and Linux) . Интересно, что обычно для этого используется более одной команды, поэтому я постараюсь упомянуть те из них, которые я использовал. Это не исчерпывающий список, поэтому, если вы используете другую команду, не упомянутую здесь, сообщите нам об этом в комментариях.
Windows — TSKILL и TASKKILL
В Windows для уничтожения программы можно использовать две команды: TSKILL и TASKKILL (TSKILL and TASKKILL) . TSKILL — более простая и менее мощная команда, но она прекрасно справляется со своей задачей. Например, если вы используете Microsoft Word , имя процесса (process name) — winword.exe. Чтобы убить Word из командной строки, (command line) просто введите следующую команду:
ГОРЯЧИЕ КЛАВИШИ! Комбинации с кнопкой WIN #Shorts
tskill winword
Это убьет Word , и вы потеряете все несохраненные данные, поэтому вам нужно быть осторожным при его использовании. Я попробовал это на несохраненном документе Word (Word doc) , и он просто исчез, когда я запустил это, никаких запросов на сохранение документов. Это в значительной степени верно для всех команд, которые я собираюсь здесь упомянуть. Вы можете убить программу мгновенно без каких-либо вопросов.
Следует отметить, что в большинстве случаев эта команда используется с параметром /A. /A указывает команде завершить процесс, работающий во всех сеансах. Поэтому обычно вы вводите следующую команду, чтобы убедиться, что процесс уничтожен:
tskill /A winword
Вторая команда, имеющая больше возможностей и более мощная, — TASKKILL . Если вы посмотрите на страницу справки (help page) для TASKKILL , вы поймете, что я имею в виду:
Горячие клавиши Windows 10 секретные комбинации
Если вы хотите иметь больше контроля и возможностей (control and options) для уничтожения программы в Windows , используйте TASKKILL . Для начала вы можете убить программу, используя следующую команду:
taskkill /F /IM winword.exe
Обратите внимание, что при использовании команды TASKKILL (TASKKILL command) необходимо использовать .EXE . /F означает принудительно завершить процесс принудительно. /IM означает имя образа (image name) , т.е. имя процесса (process name) . Если вы хотите убить с помощью идентификатора процесса ( PID ), вы должны использовать / PID вместо / IM. /T великолепен, потому что он уничтожит все дочерние процессы, запущенные указанным процессом.
Вы также можете использовать TASKKILL для удаленного подключения к другой системе и завершения процесса в этой удаленной системе. Что мне также нравится, так это возможность использовать подстановочные знаки в TASKKILL .
OS X/Linux – УБИВАТЬ и УБИВАТЬ ВСЕ
В OS X и Linux (OS X and Linux) у вас есть две команды для уничтожения процессов: KILL и KILLALL (KILL and KILLALL) . Вы должны запустить их в окне терминала (terminal window) . Чтобы убить программу, вы должны использовать либо имя программы (program name) , либо идентификатор процесса. Есть несколько способов найти эту информацию. Один из способов — через Activity Monitor .
Однако для этого требуется интерфейс GUI (GUI interface) . Если вы используете командную строку (command line) для уничтожения процесса, вы также можете использовать командную строку (command line) для поиска информации о процессе (process info) . На ум приходят две команды: top и ps -ax .
top предоставит вам список процессов с PID и именем программы, (program name) также отсортированных по использованию ЦП (CPU usage) . Это быстрый способ найти процесс, который вы хотите убить. ps -ax даст вам список, отсортированный по PID и пути к программе. Он немного отличается от верхнего.
Теперь об убийстве программы в OS (OS X) X. Вы можете просто ввести следующую команду, чтобы убить определенный процесс:
kill -9 83002
83002 — это терминальный процесс, (Terminal process) а цифра 9 означает «убить» процесс. Вы можете использовать другие числа, такие как 3, что означает «Выход (Quit) », или 6, что означает «Прервать (Abort) » . Однако в основном (Mostly) вы будете придерживаться 9. Вы также можете использовать команду KILL (KILL command) для завершения всех запущенных процессов, хотя вам, вероятно, никогда не следует использовать эту команду.
kill -TERM -1
Где KILL полезен для уничтожения одного процесса или всех процессов, KILLALL используется для уничтожения группы процессов. Например, если вы используете Google Chrome , у вас может быть запущено 10 процессов Chrome . Было бы очень неприятно использовать KILL десять раз, чтобы закрыть Chrome . Вместо этого вы можете использовать KILLALL следующим образом:
killall Evernote
killall ‘Google Chrome’
Обратите внимание, что вы должны использовать одинарные кавычки или что-либо длиннее одного слова. Кроме того, если процесс запущен не под вашим именем, а под root, вы должны использовать следующую команду:
sudo killall ‘Google Chrome’
sudo killall -9 ‘Google Chrome’
Опять же, 9 посылает конкретный сигнал KILL , а не TERM . Sudo нужен только в том случае, если вы получаете сообщение об отсутствии разрешения.
В противном случае вы можете сделать программу killall (killall program) или программу killall -9 (killall -9 program) . В OS X команда KILLALL (KILLALL command) очень удобна, когда вы не можете принудительно закрыть программу. Вам не нужно знать идентификатор процесса, что приятно. Просто введите (Just type) имя, и все процессы, связанные с этим именем, будут уничтожены.
Эта статья была предназначена для того, чтобы дать вам более продвинутые методы уничтожения программы в Windows , OS X и Linux (OS X and Linux) . Если у вас есть какие-либо вопросы об уничтожении программы с помощью командной строки (command line) , напишите комментарий, и я постараюсь помочь. Наслаждаться!
How to Use the Command Line to Kill a Program
Everyone knows how to kill a program using Task Manager in Windows or Force Quit in OS X, but sometimes it’s useful to kill a program using the сommand line. I’ve run into several situations where the program refused to end via Task Manager, even when I tried to kill the underlying process. Force Quit has it’s оwn quirks and doesn’t always kill a progrаm like іt shoυld. That’s when you can uѕе the power of the сommand line.
In this article, I’ll go through the commands for killing a program in Windows, OS X and Linux. Interestingly, there is usually more than one command for accomplishing this, so I’ll try to mention the different ones that I have used. It’s not an exhaustive list, so if you use a different command not mentioned here, please let us know in the comments.
Windows – TSKILL and TASKKILL
In Windows, you can use two commands to kill a program: TSKILL and TASKKILL. TSKILL is a simpler and less powerful command, but does the job just fine. For example, if you’re running Microsoft Word, the process name is winword.exe. To kill Word from the command line just type the following command:
tskill winword
That will kill Word and you will lose any unsaved data, so you have to be careful using it. I tried it out on an unsaved Word doc and it just disappeared when I ran this, no prompts to save the documents. This is pretty much true of all the commands I’m going to mention here as that’s kind of the point. You can to kill a program instantly without any questions.
One thing to note is that most of the time that this command is used, it’s used with the /A parameter. /A tells the command to end the process running under all sessions. So typically you would type the following command to be extra sure the process is killed:
tskill /A winword
The second command, which has more options and is more powerful, is TASKKILL. If you look at the help page for TASKKILL, you see what I mean:
If you want to have more control and options for killing a program in Windows, use TASKKILL. For starters, you can kill a program by using the following command:
taskkill /F /IM winword.exe
Note that you have to use .EXE when using the TASKKILL command. /F means to forcefully terminate the process forcefully. /IM means the image name, i.e. the process name. If you want to kill using the process ID (PID), you have to use /PID instead of /IM. /T is great because it will kill all child processes started by the specified process.
You can also use TASKKILL to remotely connect to another system and kill a process on that remote system. What I also like is the ability to use wildcards in TASKKILL.
OS X/Linux – KILL and KILLALL
In OS X and Linux, you have two commands for killing processes: KILL and KILLALL. You have to run these in the terminal window. In order to kill a program, you either have to use the program name or the process ID. There are some ways you can find this info. One way is via the Activity Monitor.
However, that requires the GUI interface. If you are using the command line to kill a process, you can use the command line to find the process info also. Two commands that come to mind are top and ps -ax.
top will give you a list of processes with the PID and the program name also sorted by CPU usage. It’s a quick way to find the process you want to kill. ps -ax will give you a listed sorted by PID and the path of the program. It’s slightly different than top.
Now for killing the program in OS X. You can simply type the following command to kill a specific process:
kill -9 83002
83002 is the Terminal process and the 9 means to kill the process. You can use other numbers like 3, which means Quit, or 6, which means Abort. Mostly, though, you’ll be sticking with 9. You can also use the KILL command to kill all running processes, though you should probably never use this command.
kill -TERM -1
Where KILL is useful for killing one process or all processes, KILLALL is using for killing a group of processes. For example, if you’re running Google Chrome, you might have 10 Chrome processes running. It would be really annoying to use KILL ten times to shut down Chrome. Instead, you could use KILLALL like so:
killall Evernote
killall ‘Google Chrome’
Note that you have to use the single quotes or anything longer than one word. Also, if the process is not running under your name, but is instead running under root, you have to use the following command:
sudo killall ‘Google Chrome’
sudo killall -9 ‘Google Chrome’
Again, the 9 is sending the specific signal to KILL rather than TERM. Sudo is only needed if you get an error about not having permission. Otherwise you can do killall program or killall -9 program. On OS X, the KILLALL command comes in really handy when you can’t force quit a program.
You don’t have to know the process ID, which is nice. Just type in the name and all processes will be killed associated with that name.
This article was meant to give you more advanced methods for killing a program in Windows, OS X and Linux. If you have any questions about killing a program using the command line, post a comment and I’ll try to help. Enjoy!
Алина Разумовская
About the author
Я компьютерный техник с более чем 10-летним опытом, в том числе 3 года в качестве 店員. У меня есть опыт работы с устройствами Apple и Android, и я особенно хорошо разбираюсь в ремонте и обновлении компьютеров. Я также люблю смотреть фильмы на своем компьютере и использовать свой iPhone для съемки фотографий и видео.
Источник: 101-help.com
Закройте программы из командной строки (Windows)
Как правильно закрыть / закрыть программы из командной строки, аналогично нажатию кнопки закрытия «X» в углу окна? Я пытаюсь закрыть Chrome под 3 различными версиями Windows: Win7 Ultimate, Win7 Home, WinXP Под Ultimate и XP: TSKILL chrome Под домом: TASKKILL /IM chrome.exe
TSKILL chrome : (Закрывает хром, нет ошибок cmd,
но ошибка хрома восстанавливается при перезапуске)
TASKKILL /IM chrome.exe : (Он закрывает хром, никаких ошибок хрома при его повторном запуске,
но ошибки в cmd: «невозможно завершить дочерние процессы (около 4-5), только принудительно с /F »)
Должен ли я игнорировать дочерние ошибки cmd, если при повторном запуске Chrome не показывает ошибок?
изменён neoDev 494
задан neoDev 494
5 ответов 5
Правильный способ закрыть / закрыть программу в конечном итоге зависит от программного обеспечения. Однако, как правило, рекомендуется закрывать программы Windows всякий раз, когда они получают сообщение WM_CLOSE. Правильно освобождая память и закрывая ручки. Существуют и другие сообщения, которые могут сигнализировать о закрытии приложения, но как автор обрабатывает каждое сообщение, зависит от автора программного обеспечения.
taskkill /IM process.exe
- WM_CLOSE против SC_CLOSE
- Как изящно завершить процесс
- Как завершить приложение «чисто» в Win32
Другие варианты включают отправку клавиш Alt+F4, использование PowerShell или сторонних приложений.
Обновить до обновленного вопроса
Проигнорируйте ошибки. Хром генерирует много процессов. Ошибки возникают, когда процесс не подтверждает сообщение WM_CLOSE, которое отправляет TASKKILL. Только процессы с циклом сообщений смогут получить сообщение, поэтому процессы, которые не имеют цикла сообщений, будут генерировать эту ошибку. Скорее всего, эти процессы являются расширениями и плагинами Chrome.
Чтобы скрыть ошибки захвата вывода
taskkill /IM chrome.exe >nul
Описание: TASKKILL — это правильный способ через командную строку закрывать приложения в соответствии с его реализацией WM_CLOSE и Microsoft KB, которую я связал.
изменён Community 1
ответ дан David Ruhmann 1k
Он имеет команду «closeprocess», которая предназначена для корректного закрытия процессов. Согласно его документу, он не завершает приложения, а отправляет WM_CLOSE во все окна верхнего уровня целевого процесса.
Если это не сработает, держу пари, в вашем приложении необычная процедура очистки. Я хотел бы посмотреть, что происходит внутри, поэтому, пожалуйста, дайте мне знать, какое у вас целевое приложение.
изменён Scott Rhee 2k
ответ дан Scott Rhee 2k
What is the proper way to close/exit programs from command line, similar to pressing the «X» close button in the corner of the window?
Ответ на этот вопрос можно найти here (ссылка Microsoft).
Вы можете отправлять сообщения WM_CLOSE в любое окно, которое хотите закрыть. Многие окна обрабатывают WM_CLOSE чтобы предложить пользователю сохранить документы.
Я не знаю, как сделать это в пакетном режиме, но вы могли бы использовать VBScript для этого. Имитация клавиш Alt + F4 (приравнивается к сигналу WM_CLOSE ).
Запустите и посмотрите на поведение этого скрипта ниже.
Set WshShell = WScript.CreateObject(«WScript.Shell») ‘ Start Notepad.exe WshShell.Run «%windir%notepad.exe» ‘ Select, or bring Focus to a window named `Notepad` WshShell.AppActivate «Notepad» ‘ Wait for 4 seconds WScript.Sleep 4000 WshShell.SendKeys «Foo» WshShell.SendKeys «» WshShell.SendKeys «Bar» WshShell.SendKeys «» WshShell.SendKeys «» WshShell.SendKeys «baz» WshShell.SendKeys «%»
Here список имен ключей для SendKeys.
Когда вы запускаете скрипт, блокнот открыт, некоторые слова пишутся, а затем подается сигнал о закрытии программы, см. Рисунок ниже.
Дополнительный вопрос
Можно ли запустить свернутую программу или фон с vbscript?
Да. Используйте следующий код:
WshShell.Run «%windir%notepad.exe», 2
Для получения дополнительной информации проверьте Run Method .
Может ли Chrome перейти на какой-либо URL в VBScript?
Dim iURL Dim objShell iURL = «www.google.com» set objShell = CreateObject(«Shell.Application») objShell.ShellExecute «chrome.exe», iURL, «», «», 1
Если по умолчанию используется chrome, используйте:
set objShell = CreateObject(«WScript.Shell») objShell.run(iURL)
Есть ли способ привлечь внимание к конкретному приложению (chrome.exe)?
Я хочу отправить alt+f4 ТОЛЬКО в chrome, независимо от того, что я делаю с другими окнами.
Следующий код работает на Windows 8.
Dim objShell iURL = «www.google.com.br» Set WshShell = WScript.CreateObject(«WScript.Shell») WshShell.Run(iURL) ‘ Select, or bring Focus to Google Chrome WshShell.AppActivate «Google Chrome» ‘ Wait for 5 seconds WScript.Sleep 5000 WshShell.SendKeys «%»
изменён Community 1
ответ дан stderr 9k
Существуют некоторые утилиты командной строки, которые могут отправлять подходящее сообщение WM_SYSCOMMAND (с SC_CLOSE в качестве команды) в окно верхнего уровня программы. Я уверен, что по крайней мере один будет упомянут в ближайшее время. (Тогда кто-то упомянет AutoIt. Затем будет ответ, показывающий, как это сделать с помощью PowerShell и CloseMainWindow() .)
Утилита командной строки, которая поставляется как встроенная команда в TCC JP Software, интерпретаторе команд и процессоре командных сценариев для Windows, называется TASKEND .
ответ дан JdeBP 23k
Хорошо, не собираюсь лгать. Я видел это на stackoverflow и думал, что это сложный вопрос. Тааак я только что провел последние 2 часа, написав код. И вот оно .
Выполнив следующие действия, вы можете набрать «TaskClose notepad.exe» после нажатия «Пуск», и он автоматически сохранит все недокументированные файлы блокнота на рабочем столе. Он автоматически закроет chrome.exe и сохранит настройки восстановления.
Вы можете добавлять и удалять дополнительные настройки для других приложений в соответствии с условиями if. Например:
If InStr(SINGLECLOSEAPPS, WScript.arguments(0)) Then SmartSendKeys strOutput,»bypass»,»%» ElseIf InStr(AUTOCLOSEAPPS, WScript.arguments(0)) Then SmartSendKeys strOutput,»»,»%|%s|.txt|%s» ‘Example 1: ============================================= ElseIf InStr(WScript.arguments(0), «outlook») Then SmartSendKeys strOutput,»»,»%» ‘Activate Alt+4 ‘======================================================== ‘Example 2: ============================================= ElseIf InStr(WScript.arguments(0), «notepad») Then ‘I know, already in my autoapps SmartSendKeys strOutput,»»,»%|%s|.txt» ‘Activate Alt+4 + Save File + = autoincrement filename ‘======================================================== Else SmartSendKeys strOutput,»bypass»,»%» End If
VBS и командные файлы выполняют следующие процедуры:
- Собирает исполняемый файл.
- Запрашивает имена исполняемых приложений из списка задач.
- Выполняет процедуру «Alt +TAB(x)», пока не проверит, открыто ли окно.
- Затем выполняет команды прокрутки, будь то «Alt +F4» или даже в крайних случаях
- Alt +F4
- Активировать Сохранить
- AutoIncrememnt Имя файла
- Выйти из приложения.
ReturnAppList.bat: установить в «C:windowssystem32»
TaskClose.bat: установить в «C:windowssystem32» И «C:UsersYourUserName»
C:windowssystem32wscript.exe c:windowssystem32taskclose.vbs %1
TaskClose.vbs: установить в «C:windowssystem32»
Set WshShell = CreateObject(«WScript.Shell») Const SINGLECLOSEAPPS = «chrome.exe|iexplore.exe|firefox.exe» Dim DEFAULTSAVELOCATION : DEFAULTSAVELOCATION = wshshell.SpecialFolders(«Desktop») Const AUTOCLOSEAPPS = «notepad.exe» Const WshFinished = 1 Const WshFailed = 2 strCommand = «returnapplist.bat » Set WshShellExec = WshShell.Exec(strCommand result.txt») Case WshFailed strOutput = LoadStringFromFile(«result.txt») End Select ‘SmartSendKeys(application_name_array, bypassclause, additionalcommands) ‘======================== If InStr(SINGLECLOSEAPPS, WScript.arguments(0)) Then SmartSendKeys strOutput,»bypass»,»%» ElseIf InStr(AUTOCLOSEAPPS, WScript.arguments(0)) Then SmartSendKeys strOutput,»»,»%|%s|.txt|%s» Else SmartSendKeys strOutput,»bypass»,»%» End If ‘SmartSendKeys(application_name_array, bypassclause, additionalcommands) ‘======================== Function SmartSendkeys(fArr, LoopCount, RollCommands) Dim x Dim splt : splt = Split(farr, vbCrLf) If loopcount = «bypass» Then x = 0 Else x = UBound(splt) End If a = 0 For s=0 To x If Len(splt(s)) > 1 Then Set objShell = WScript.CreateObject(«WScript.Shell») c = 1 : tabs = «» Success = False Do Until Success = True Success = objShell.AppActivate(Trim(splt(s))) If success <> True Then If c = 1 Then tabs = «» Else tabs = «» End If ‘wscript.echo «Activating: » %» %» App not found» Exit Function End If End If Loop Dim cmds : cmds = Split(rollcommands, «|») For Each cm In cmds If InStr(cm, «») Then Dim file_ext : file_ext = Split(cm, «.») cm = DEFAULTSAVELOCATION autosave» «.» Scripting.FileSystemObject») Set f = fso.OpenTextFile(filename, fsoForReading) Dim fulltext : fulltext = f.ReadAll LoadStringFromFile = fulltext f.Close fso.DeleteFile(filename) End Function
Это было очень весело писать, и я больше рад закончить его, чем показывать ответ. Желаю хорошей недели!
Источник: poweruser.guru
Консольная команда для закрытия окна программы без убийства процесса
У меня qbittorrent в автозапуске. При каждом старте сессии открывается его окно. Приходится постоянно руками закрывать, раздражает. Я хочу чтобы он запускался в трее, без отображения окна приложения пока я сам его не открою. Данный торрент-клиент этого вроде не умеет, поэтому я придумал костыль:
Хочу прописать в автозапуск команду, которая будет закрывать GUI qbittorrent, но оставлять его работать из трея точно так же, как если бы я вручную закрыл окно. Но все что я смог нагуглить — это прибивание процесса, которое мне естественно не подходит.
9 комментариев
Ну емае, я же не настолько тупой. С этой галочкой окно свернуто, но значок на панели задач все равно висит. Мне нужно чтобы программа запускалась сразу в трее.
не знаю, у меня с такими настройкам и автозапуском всё нормально, ничего на панели задач не появляется
Мне нужно чтобы программа запускалась сразу в трее.
Проделайте еще раз затем
перелогинтесь запустите торрент появиться должен в трее и опять поставьте в автозапуск перелогинтесь
p5ql/epu q9300 clover,hackintosh,mint,void,manjaro,only kde
Пришлось ещё заново добавить приложение в автозапуск, после чего заработало как надо. С данным приложением вопрос решён. Спасибо.
Хотелось бы добиться того же эффекта с приложениями, которые сворачиваются в трей, но не поддерживают запуск сразу в трее, например некоторые VPN-клиенты. Консольной команды для закрытия окна все таки нет?
Последний раз редактировалось 8 июля 2022, 12:31
xprop и и xwininfo покажут параметры окна. Можно управлять окнами с помощью window id.
А дальше изучайте sh.
Источник: manjaro.ru