Как убить процесс?
Как убить процесс?
Посмотрел на форумах и/к на убивание процесса, у всех делается через код т.е. Process proc =.
Как убить изменённый процесс?
Допустим если имя процесса (файла) изменили, то по обычному имени не убить его, как убить.
Как убить процесс и его подпроцессы?
Задача такая. Нужно сделать апдейт на файле, однако у него есть подпроцессы. Как 1. Узнать имена.
Как убить процесс explorer.exe?
Как убить процесс explorer.exe??
Убить процесс в C#
Я уже не знаю. Как я только не пробовал убить процесс chrome.exe через C#. Ничего не получается. Может кто то может подсказать, что не так с моим «кодом». Сперва создаю массив всех процессов, потом обхожу этот массив и если имя процесса совпадает с нужной строкой — убиваю его.
Process[] listprosecc = Process.GetProcesses(); foreach (Process oneproc in listprosecc) < string ProsessName = oneproc.ProcessName; ProsessName = ProsessName.ToLower(); if (ProsessName.Equals("chrome.exe")) < oneproc.Kill(); MessageBox.Show("Я дошел. "); >>
Отслеживать
user177221
задан 15 янв 2017 в 17:59
509 1 1 золотой знак 5 5 серебряных знаков 19 19 бронзовых знаков
В if заходит?
15 янв 2017 в 18:00
var pr = prss.Select(p => p.ProcessName.Contains(«chrome»)).Count(); у меня получается 141 штука таких процесса 🙂
15 янв 2017 в 18:16
@Ev_Hyper. Та в том и дело, что нет. Но процесс 100% имеет имя chrome.exe
Убиваем процессы в Linux — команды ps, kill и killall
Не смотря на свою стабильность, некоторые приложения в Linux иногда виснут. Иногда приложения перестают отзываться или просто работают так медленно, что корректно закрыть их не получается. Один из способов «убить», запущенное приложение в Linux, это использование таких команд, как kill или killall. Рассмотрим, как использовать эти команды, находить PID процесса и посылать сигнал SIGKILL.
Под процессом мы будем понимать запущенную в системе копию программы. Например, если вы открыли три окна калькулятора (например, gcalctool), это значит, что вы запустили три процесса.
Находим PID зависшего процесса
Каждый процесс в Linux имеет свой идентификатор, называемый PID. Перед тем, как выполнить остановку процесса, нужно определить его PID. Для этого воспользуемся командами ps и grep. Команда ps предназначена для вывода списка активных процессов в системе и информации о них. Команда grep запускается одновременно с ps (в канале) и будет выполнять поиск по результатам команды ps. Вывести список всех процессов можно, выполнив в командной строке:
ps axu
Но, как правило, список очень большой и найти процесс, который мы хотим «убить», бывает не так просто. Здесь на помощь приходит команда grep. Например, чтобы найти информацию о процессе с именем gcalctool выполните команду:
ps axu | grep gcalctool
Команда grep выполнит поиск по результатам команды ps и на экран будут выведены только те строки, которые содержат строку (слово) gcalctool. Здесь есть одна интересная деталь, например, если у вас не запущено приложение gcalctool, то после выполнения ps axu | grep gcalctool вы получите:
$ ps axu | grep gcalctool yuriy 25587 0.0 0.0 10636 884 pts/2 S+ 10:20 0:00 grep --color=auto gcalctool
То есть мы получили сам процесс grep, так как в качестве параметра команде мы указали слово gcalctool, и grep нашел сам себя в выводе команды ps.
Если процесс gcalctool запущен, то мы получим:
yuriy@yuriy-NIX:~$ ps axu | grep gcalctool yuriy 25609 7.6 0.4 500840 17964 ? Sl 10:20 0:00 gcalctool yuriy 25624 0.0 0.0 10640 884 pts/2 S+ 10:21 0:00 grep --color=auto gcalctool
Здесь нас интересует строка: «yuriy 25609 7.6 0.4 500840 17964 ? Sl 10:20 0:00 gcalctool». Число 25609 и есть идентификатор (PID) процесса gcalctool.
Есть еще один более простой способ узнать PID процесса — это команда pidof, которая принимает в качестве параметра название процесса и выводит его PID. Пример выполнения команды pidof:
$ pidof gcalctool 25609
«Убиваем» процесс командой kill
Когда известен PID процесса, мы можем убить его командой kill. Команда kill принимает в качестве параметра PID процесса. Например, убьем процесс с номером 25609:
kill 25609
Вообще команда kill предназначена для посылки сигнала процессу. По умолчанию, если мы не указываем какой сигнал посылать, посылается сигнал SIGTERM (от слова termination — завершение). SIGTERM указывает процессу на то, что необходимо завершиться. Каждый сигнал имеет свой номер. SIGTERM имеет номер 15. Список всех сигналов (и их номеров), которые может послать команда kill, можно вывести, выполнив kill -l. Чтобы послать сигнал SIGKILL (он имеет номер 9) процессу 25609, выполните в командой строке:
kill -9 25609
Сигнал SIGTERM может и не остановить процесс (например, при перехвате или блокировке сигнала), SIGKILL же выполняет уничтожение процесса всегда, так как его нельзя перехватить или проигнорировать.
Убиваем процессы командой killall
Команда killall в Linux предназначена для «убийства» всех процессов, имеющих одно и то же имя. Это удобно, так как нам не нужно знать PID процесса. Например, мы хотим закрыть все процессы с именем gcalctool. Выполните в терминале:
killall gcalctool
Команда killall, также как и kill, по умолчанию шлет сигнал SIGTERM. Чтобы послать другой сигнал нужно воспользоваться опцией -s. Например:
killall -s 9 gcalctool
Заключение
Некоторые процессы не удается остановить под обычным пользователем. Например, если процесс был запущен от имени пользователя root или от имени другого пользователя системы, то команды kill и killall нужно выполнять от имени суперпользователя, добавляя sudo (в Ubuntu):
sudo kill 123
Бывают ситуации, когда вы работаете в графическом интерфейсе (например, GNOME) и вам не удается открыть эмулятор терминала, чтобы остановить зависший процесс. Тогда можно переключиться на виртуальную консоль клавишами Ctrl+Alt+F1, залогиниться в ней и выполнять команды уже из нее. А потом перейти обратно, нажав Ctrl+Alt+F7.
Справку по использованию любой команды можно получить командой man:
man ps man grep man pidof man kill man killall
Войдите, чтобы ставить лайки мне нравится
войдите, чтобы ставить лайки
Материалы по теме:
- Основы работы в командной строке Linux
- kill
- Видео: Подборка полезных утилит и команд Linux
- Опубликовано: 12.09.2012
Смотрите также
- Просмотр содержимого файлов в командной строке Linux
- Как в Linux вывести список установленных пакетов и отсортировать их по размеру
- Lolcat и neofetch
- Вызов предыдущей команды в командной строке Linux
- Простой авто-кликер в Linux c помощью небольшого BASH скрипта
- Получаем информацию об оборудовании в Linux
- Установка и настройка Conky
- Как изменить терминал по умолчанию в Ubuntu
- Как разделить большой файл на части
- Snap-пакеты в Linux. Что это и как с ними работать
- Gentoo
- GNOME
- GRUB
- Ubuntu
- Внешний вид
- Игры Linux
- Интернет и сети
- Командная строка
- Настройка Linux
- Оборудование и драйвера
- Программы Linux
- Файловая система
- Шрифты
- Общие темы
- Руководство по Ubuntu Linux для начинающих
- Elementary OS
- ArchLinux
- Команды Linux
Новое в галерее
Новые комментарии
evgnor86 05:59 30.10.2023
xKDE 02:56 30.10.2023
xKDE 02:42 30.10.2023
bestuzheff 23:28 29.10.2023
PedroAmor 22:28 29.10.2023
PedroAmor 22:24 29.10.2023
x230 22:07 29.10.2023
choice 21:56 29.10.2023
Математик 21:53 29.10.2023
choice 21:44 29.10.2023
Комментарии
Активный пользователь
13.09.2012
09:10
Постоянная ссылка на комментарий
Войдите, чтобы ставить лайки мне нравится
войдите, чтобы ставить лайки
спасибо, интересная статья.
Активный пользователь
03.01.2013
22:18
Постоянная ссылка на комментарий
Войдите, чтобы ставить лайки мне нравится
войдите, чтобы ставить лайки
у меня в xfce есть диспетчер xfce с пидами и эрсэсэсами. я его на панель в быстрый запуск вывел. зависла прога — щелк по диспетчеру , на процесс (он там буро-красным
горит) правой кнопкой — хошь завершить, хошь убить. Блямс. и готово.
к чему такие сложности.
06.01.2013
17:28
Постоянная ссылка на комментарий Родительский комментарий USUB
Войдите, чтобы ставить лайки мне нравится
войдите, чтобы ставить лайки
зато в любом unix-подобном дистрибутиве будет работать такой способ
Активный пользователь
07.01.2013
09:28
Постоянная ссылка на комментарий Родительский комментарий USUB
Войдите, чтобы ставить лайки мне нравится
войдите, чтобы ставить лайки
А на сервер тоже DE ставить? Работу в командной строке в Unix-подобных ОС знать необходимо.
uselessgnome
20.09.2013
10:11
Постоянная ссылка на комментарий Родительский комментарий USUB
Войдите, чтобы ставить лайки мне нравится
войдите, чтобы ставить лайки
А ты попробуй завершить процесс Xorg в своем хваленом диспетчере,когда у тебя графический интерфейс Xсервера повиснет, потом расскажешь (:
Активный пользователь
22.09.2013
21:48
Постоянная ссылка на комментарий Родительский комментарий uselessgnome
Войдите, чтобы ставить лайки мне нравится
войдите, чтобы ставить лайки
Извиняй, конечно, но если все корректно поставлено, то и Xorg заврешать не придется. Кроме того, к команде предстовляется справка. И этим все сказано.
23.10.2013
20:33
Постоянная ссылка на комментарий Родительский комментарий uselessgnome
Войдите, чтобы ставить лайки мне нравится
войдите, чтобы ставить лайки
ctrl+alt+backspace ни кто еще не отменял)
Активный пользователь
02.06.2014
15:19
Постоянная ссылка на комментарий Родительский комментарий Alex
Войдите, чтобы ставить лайки мне нравится
войдите, чтобы ставить лайки
Отменял, если заранее не настроено.
Активный пользователь
24.10.2013
18:30
Постоянная ссылка на комментарий Родительский комментарий USUB
Войдите, чтобы ставить лайки мне нравится
войдите, чтобы ставить лайки
Во-первых, большинство графических диспетчеров задач (системных мониторов, менеджеров процессов или как там их ещё называют. ) сами кушают некоторое количество ресурсов, а в ситуации, когда какой-либо процесс «завис», этот «зависший» процесс будет тормозить всё остальное, в том числе и сам диспетчер задач. По сравнению с ним, простые консольные команды практически невесомы, и должны работать почти в любой ситуации.
Во-вторых, они дают возможность завершать процессы даже если не загружен никакой графический интерфейс. Поэтому умение работать в консоли всегда полезно.
В-третьих, знание подобных консольных команд необходимо для автоматизации и настройки системы, и в некоторых случаях их использование гораздо более удобней, чем нежили использование громоздких графических утилит. Например, если вам нужно убить какой-нибудь ПЛОХОЙ_ПРОЦЕСС, то Вы просто можете ввести команду: «killall ПЛОХОЙ_ПРОЦЕСС», а если Вам приходится убивать его часто, то Вы можете создать какой-нибудь пункт запуска с этой командой, или назначить её под какую-нибудь «горячую клавишу». Таким образом, Вы сможете убить неугодный Вам процесс всего в один клик, или одно нажатие клавиши. Согласитесь, ведь это гораздо удобнее, чем каждый раз запускать диспетчер, искать в нём неугодный процесс, завершать его, а после завершать сам диспетчер.
P.S. Статья очень хорошая, автору спасибо!
forum.lissyara.su
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Первое новое сообщение • 4 сообщения • Страница 1 из 1
Demis прапорщик Сообщения: 496 Зарегистрирован: 2015-05-25 14:36:32
как убить процесс?
Ламерский вопрос: как убить процесс?
Казалось-бы в чем проблема?
Делай «kill -9 72397» и дело в шляпе, но не все так просто.
1. «kill -9 72397» — не убивает процесс.
2. «kill -1 72397» — не убивает процесс.
3. «kill -KILL 72397» — не убивает процесс.
4. «kill -HUP 72397» — не убивает процесс.
5. «kill -ABRT 72397» — не убивает процесс.
ps -x|grep -e 72397 -e PID PID TT STAT TIME COMMAND 72397 2- D+ 0:00.00 ls -lAG /var/db
Статус нам рисует D+, что фигня конечно (в том смысле, что «очень не есть хорошо»).
kill -s STOP 72397
меняет нам статус на Т+
ps -x | grep -e 72397 -e PID PID TT STAT TIME COMMAND 72397 2- T+ 0:00.00 ls -lAG /var/db
Но не более того.
Если повторить «kill -9 72397», то статус меняется на D+.
Но именно перезагрузки и хочется избежать, по крайней мере ближайшие пару месяцев (в силу ряда причин).
Кроме того, если подключиться по ssh и сделать «ls -lAG /var/db» процесс так-же подвисает.
Если грохаешь сессию ssh, то второй процесс «ls -lAG /var/db» так и остается запущенным.
По статусам ведет себя так-же.
Есть смутное предположение, что возможно немного побит /var.
Текущий аптайм машины:
uptime 11:11AM up 85 days, 17:45, 2 users, load averages: 11.00, 11.00, 11.00
uname -a FreeBSD s5 11.1-RELEASE FreeBSD 11.1-RELEASE #0 r335441: Thu Jun 21 09:28:52 MSK 2018 demis@s5:/usr/obj/usr/src/sys/GENERIC amd64
procstat -kk 72397 PID TID COMM TDNAME KSTACK 72397 100161 ls - mi_switch+0xe5 sleepq_wait+0x3a sleeplk+0x183 __lockmgr_args+0x32c ffs_lock+0xa5 VOP_LOCK1_APV+0x89 _vn_lock+0x43 vget+0x47 cache_lookup+0x600 vfs_cache_lookup+0xac VOP_LOOKUP_APV+0x83 lookup+0x701 namei+0x486 kern_statat+0x98 sys_fstatat+0x2c amd64_syscall+0x6c4 Xfast_syscall+0xfb
Вот соответственно и возникает вопрос: как все-таки убить процесс не перезагружая машину?
Есть соображения?
Demis
Хостинг HostFood.ru
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
skeletor майор Сообщения: 2548 Зарегистрирован: 2007-11-16 18:22:04
как убить процесс?
Если процесс невозможно убить по kill -9, значит что-то с I/O. Именно на нём и подвисает процесс так, что без ребута не убить. Проверьте через fsck разделы, заодно посмотрите smart дисков.
skeletor
Demis прапорщик Сообщения: 496 Зарегистрирован: 2015-05-25 14:36:32
как убить процесс?
Спасибо.
Собственно, в итоге, так и сделал.
Но перед этим еще помучался.
Еще одил нинк нарыл:
https://unix.stackexchange.com/question . s-not-work
Где интересные комменты вроде таких:
ps Al You will see something like: 0 Z 1000 24589 1 0 80 0 - 0 exit ? 00:00:00 soffice.bin (Note the "Z" on the left) If the 5th column is not 1, then it means it has a parent process. Try killing that parent process id. If its PPID = 1, DON'T KILL IT. think which other devices or processes may be related to it.
Попробовал так-же и так:
dtrace -p 72397
виснет, но отзывается на Ctrl+C
Цепочка процессов «по ранжиру» выглядела так:
UID PID PPID CPU PRI NI VSZ RSS MWCHAN STAT TT TIME COMMAND 0 1 0 0 20 0 5408 1040 wait ILs - 0:00.02 /sbin/init -- 0 72391 1 0 20 0 43744 3080 wait I 2- 0:00.01 su 0 72392 72391 0 20 0 19660 4340 pause I 2- 0:00.01 _su (csh) 0 72397 72392 0 20 0 15088 2836 ufs D+ 2- 0:00.00 ls -lAG /var/db
Проверка показала незначительные проблемки на / и на /var :
fsck / ** /dev/ada0p2 (NO WRITE) ** Last Mounted on / ** Root file system ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts UNREF FILE I=131508 OWNER=root MODE=100600 SIZE=0 MTIME=Apr 20 03:01 2021 CLEAR? no UNREF FILE I=131527 OWNER=root MODE=100600 SIZE=0 MTIME=Apr 20 03:01 2021 CLEAR? no ** Phase 5 - Check Cyl groups 6794 files, 122746 used, 385037 free (1221 frags, 47977 blocks, 0.2% fragmentation) ** /dev/ada0p4 (NO WRITE) ** Last Mounted on /var ** Phase 1 - Check Blocks and Sizes INCORRECT BLOCK COUNT I=4012899 (160 should be 152) CORRECT? no ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups FREE BLK COUNT(S) WRONG IN SUPERBLK SALVAGE? no SUMMARY INFORMATION BAD SALVAGE? no BLK(S) MISSING IN BIT MAPS SALVAGE? no 1359 files, 276605 used, 7812503 free (471 frags, 976504 blocks, 0.0% fragmentation) fsck /usr ** /dev/ada0p5 (NO WRITE) ** Last Mounted on /usr ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 958531 files, 11863656 used, 4385175 free (311311 frags, 509233 blocks, 1.9% fragmentation)
Смарты, на мой взгляд, красивые.
smartctl -d atacam -A -T permissive /dev/ada0 smartctl 6.6 2017-11-05 r4594 [FreeBSD 11.1-RELEASE amd64] (local build) Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000f 253 100 051 Pre-fail Always - 0 3 Spin_Up_Time 0x0007 100 100 015 Pre-fail Always - 8640 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 446 5 Reallocated_Sector_Ct 0x0033 253 253 010 Pre-fail Always - 0 7 Seek_Error_Rate 0x000f 253 253 051 Pre-fail Always - 0 8 Seek_Time_Performance 0x0025 253 253 015 Pre-fail Offline - 0 9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 53146 10 Spin_Retry_Count 0x0033 253 253 051 Pre-fail Always - 0 11 Calibration_Retry_Count 0x0012 253 253 000 Old_age Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 424 190 Airflow_Temperature_Cel 0x0022 055 055 000 Old_age Always - 45 194 Temperature_Celsius 0x0022 103 103 000 Old_age Always - 45 195 Hardware_ECC_Recovered 0x001a 100 100 000 Old_age Always - 155822 196 Reallocated_Event_Count 0x0032 253 253 000 Old_age Always - 0 197 Current_Pending_Sector 0x0012 253 253 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0030 253 253 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 4 200 Multi_Zone_Error_Rate 0x000a 100 100 000 Old_age Always - 0 201 Soft_Read_Error_Rate 0x000a 253 100 000 Old_age Always - 0 202 Data_Address_Mark_Errs 0x0032 100 100 000 Old_age Always - 169
Стиснув зубы и бормоча что-то точно отчетливо-невнятно-цензурное пошел в перегрузку.
Прочекался в сингл-моде.
Все заработало — ок.
Обидно, только, из-за такой фигни перегружать машину.