3 мин для чтениякоманда kill в linux
Содержание:
- Terminating a Process using kill Command
- Суть[править]
- Завершаем процессы в Linux
- Use the ‘kill’ Command
- Linux force kill process using killall command
- Основные сигналы
- Create a Force-Kill Keyboard Shortcut
- Specifying PID
- Listing All Processes
- Kill Linux Applications Using the ‘top’ Command
- Examples
- Conclusion
- What is a PID?
- Синтаксис
- Avoid Unresponsive Software: Upgrade Your Hardware
- Terminating a Process
- Управление процессами
- Заключение
Terminating a Process using kill Command
You can terminate any process by issuing the appropriate signal to the process concerned. The kill command sends signal 15, the terminate signal, by default. This signal causes the process to terminate in an orderly manner. The kill command sends a termination signal to one or more processes. The syntax to use the kill command is as follows :
# kill PIDs
Note: The kill command terminates only those processes that you own. The root user can use the kill command on any process.
You need to know the PID of the process before you can terminate it. You can use either the ps or pgrep command to locate the PID of the process. Also, you can terminate several processes at the same time by entering multiple PIDs on a single command line. Lets see an example of kill command. We would kill the process ‘sleep 400’ as shown below.
# ps -ef | grep sleep root 1337 1218 0 07:33 pts/0 00:00:00 sleep 400
# kill -9 1337
# ps -ef | grep sleep #
Суть[править]
Что было бы, если бы школьная элита, представленная лучшими учениками и участниками разных клубов, получала суперспособности и угнетала младших школьников, пользуясь рычагами законной власти? В мире аниме Kill la kill такие носят форму, состоящую из «жизненных нитей». Чем выше процент жизненных нитей в школьной форме Академии Хоннодзи, тем выше статус ученика — и тем больше у него суперспособностей, дарованных этими самыми нитями. Глава школьного совета Кирюин Сацуки носит форму, полностью состоящую из «жизненных нитей», её опора и защита — элитная четверка – на тридцать процентов. Клан Кирюин серьезно намерен захватить все школы Японии. Но однажды им бросает вызов новенькая ученица — Рюко Матои.
В пересказе это выглядит стандартным, хоть и дурацким, сюжетом фантастического сёнэн-аниме. Но на самом деле это пародия на сёнэн, с диким количеством гипердеформа, фансервиса и выжиманием в асфальт всех педалей. Каждый штамп жанра сёнэн присутствует в преувеличенном масштабе. Правило крутизны и правило прикольности полностью вытесняют всякую реалистичность на задний план, герои не просто грызут реквизит, а рвут его в клочья, собирают в стопку и снова рвут.
Завершаем процессы в Linux
Существуют разные системные средства, позволяющие «убить» какой-либо процесс. Иногда для этого приходится узнавать его идентификатор, а в других ситуациях достаточно только названия. Далее мы предлагаем детально изучить все представленные методы, чтобы найти оптимальный для себя и выполнять его при необходимости, учитывая описанные ранее сигналы.
Способ 1: «Системный монитор»
Начнем с самого простого, но менее вариативного метода, который осуществляется через программу графического интерфейса и будет полезен тем пользователям, кто просто хочет завершить процесс, не прибегая при этом к запуску терминальных команд. Рассмотрим эту операцию на стандартной оболочке дистрибутива Ubuntu.
- Перейдите в меню «Показать приложения», где отыщите «Системный монитор» и запустите его, кликнув по значку левой кнопкой мыши.
В появившемся окне вы увидите список процессов. Найдите имя необходимой для завершения задачи.
Дополнительно вы можете переместиться в свойства объекта через контекстное меню, чтобы посмотреть всю информацию о нем.
Щелкните правой кнопкой мыши по строке и выберите пункт «Завершить». Это же действие выполняется через горячую клавиш Ctrl + E. Еще внизу имеется кнопка, позволяющая завершить процесс без вызова контекстного меню.
Если же операция не завершилась по каким-либо причинам, задействуйте опцию «Убить».
Ознакомьтесь с информацией в предупреждении и подтвердите свои намерения.
В преимущественном большинстве графических оболочек системный монитор реализован похожим образом, поэтому каких-то проблем с пониманием интерфейса возникнуть не должно.
Способ 2: Команда kill
Для применения команды kill потребуется знание PID (идентификатора процесса), поскольку именно так осуществляется применение аргументов. В статье ниже мы детально описали операцию просмотра списка процессов для получения различной информации. Обязательно ознакомьтесь с ней перед выполнением следующей инструкции.
Подробнее: Просмотр списка процессов в Linux
Далее остается только запустить «Терминал» и задействовать упомянутую команду. Для начала изучите ее простой синтаксис: . Теперь давайте рассмотрим пример «убийства».
- Откройте меню приложений и запустите «Терминал».
Введите простую команду для получения информации об указанном процессе, где name — имя желаемой программы.
В отобразившемся результате отыщите главный PID и запомните его.
Введите для завершения процесса через сигнал SIGTERM. Вместо PID вам нужно написать определенный ранее номер идентификатора.
Теперь вы можете снова использовать , чтобы проверить, была ли завершена операция.
То же самое действие по «убийству» осуществляется и через другой аргумент путем ввода .
Если приведенные выше команды не принесли никакого результата, потребуется обозначить сигнал SIGKILL, вставив команду .
Учтите, что некоторые процессы запускаются от имени суперпользователя, соответственно, для их завершения требуются привилегии. Если при попытке ввода kill вы получаете информацию «Отказано в доступе», вводите перед основной командой sudo, чтобы получилось .
Способ 3: Команда pkill
Следующая консольная утилита называется pkill и является модернизированной версией предыдущей команды. Здесь все реализовано точно по такому же образу, но вместо PID от пользователя требуется вводить название процесса.
- Для отправки сигнала SIGTERM используйте .
После вы можете убедиться, что операция была успешно завершена.
Задайте вручную тип сигнала, введя такую форму , где -TERM — необходимый сигнал.
Используйте для определения того, что процесс больше не выполняется, если вы не хотите задействовать ps
Способ 4: Команда killall
В качестве последнего способа мы рассмотрим команду под названием killall. Ее функционирование и синтаксис выглядят точно так же, как у всех предыдущих утилит, поэтому останавливаться на этом мы не будем. Только уточним, что эта команда позволяет завершить все процессы с указанным названием разом и может быть использована в разных случаях.
Теперь вы знаете все о завершении процессов в Linux. Перед выполнением методов убедитесь, что принудительное «убийство» не приведет к системным сбоям. Если же ни один вариант не позволил полностью избавиться от процесса, попробуйте просто перезагрузить компьютер или удалить софт, связанный с этой опцией.
Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.
Use the ‘kill’ Command
The first method is to use the ps and kill commands. The advantage of using this method is that it works on all Linux systems.
The kill command needs to know the process ID of the application you need to kill, and that is where ps comes in.
ps -
The ps command lists all the running processes on your computer. The -ef switches provide a full-format listing. Another way to get the list of processes is to run the top command.
Now that you have the process id, you can run the kill command:
For example:
If, after running the kill command, the application doesn’t die, you can force it by using the -9 switch as follows:
Linux force kill process using killall command
Instead of using PID one can kill any process by name using the killall or pkill command. The syntax is: The killall command sends a signal to all processes running any of the specified commands. For example, forcefully kill all nginx process, run: You may want to run the killall command as root user to kill process of all users on Linux: It is also possible to kill process with confirmation:
How to kill processes older than TIME
Want to kill a process called vim that has been running for more than 24 hours? Try: The time is specified as a float then a unit. The units are:
Unit | Meaning |
---|---|
s | seconds |
m | minutes |
h | hours |
d | days |
w | weeks |
M | Months |
y | years |
Основные сигналы
Следующие сигналы являются частью стандарта POSIX. Каждый сигнал макрос, определенный в <signals.h> Файл заголовка системы. Они, как правило, сокращенны, без их SIG- префикса; например SIGHUP часто называют просто как HUP.
SIGTERM – Этот сигнал запрашивает остановку процесса который работает. Этот сигнал может быть проигнорирован.Процессу дается время, чтобы хорошо выключился. Когда программа хорошо выключается, это означает, что ей дано время, чтобы спасти его прогресс и освободить ресурсы. Другими словами, он не «forced» прекращение работы процесса.
SIGKILL – сигнал SIGKILL заставляет процесс прекратить выполнение своей работы немедленно. Программа не может игнорировать этот сигнал. Несохраненный прогресс будет потерян.
Синтаксис для «kill».
Синтаксис команды такой:
# kill PID(s)
или
# kill %pid
Сигнал по умолчанию (если он не указан) является SIGTERM. Когда данный сигнал не помогает и не работает, вы можете использовать следующие опции для «kill» чтобы завершить процесс принудительно:
# kill SIGKILL PID
Или
# kill -9 PID
где «-9» — это флаг относится к сигналу SIGKILL.
Если вы не знаете какой нужно использовать PID приложения которого следует избавиться, то запустите команду:
$ ps -aux
А если знаете конкретное приложение (например apache), то можно отсеять ненужное и вывести все процессы по данной службе:
$ ps -aux | grep apache
И это отобразит все запущенные приложения вместе с его PID-ом(ами).
Например, чтобы убить приложение, я выполните следующую команду:
# kill -9 3629
Стоит также отметить, что вы можете использовать несколько процессов одновременно чтобы их можно было » убить»:
# kill -9 PID1 PID2 PID 3
Перезагурзить конфигурационные файлы или перезапуск утилит:
# kill -1 number_of_PID
Особенно полезными сигналы включают HUP, INT, kill, STOP, CONT, и 0.
Варианты таковы:
-s signal_name
Символическое имя сигнала, задающее сигнал для отправки сигнала не по умолчанию.
-l
Если операнд не указан, то показать имена сигналов; В противном случае, написать название сигнала, соответствующего exit_status.
-signal_name
Символическое имя сигнала, задающее сигнал для отправки в TERM по умолчанию.
-signal_number
Неотрицательное десятичное целое, задающее сигнал для отправки в TERM по умолчанию.
Следующие PID-ы, имеют особое значение:-1 Если суперпользователь, то транслирует сигнал всем процессам; в противном случае вещает на все процессыbelong-
ing для пользователя.
Некоторые из наиболее часто используемых сигналов:
- 1 HUP (hang up) — повесить.
- 2 INT (interrupt) — прерывание.
- 3 QUIT (quit) — выход.
- 6 ABRT (abort) — прерывания.
- 9 KILL (non-catchable, non-ignorable kill)
- 14 ALRM (alarm clock) — будильник.
- 15 TERM (software termination signal) — Программное обеспечение для прекращения сигнала.
PKill
Команда «pkill» позволяет использовать расширенные шаблоны регулярных выражений и других критериев соответствия. Вместо того чтобы использовать PID, теперь вы можете убить приложение, введя имя процесса. Например, чтобы убитьбраузер Firefox , просто запустите команду:
# pkill Firefox
Так как он соответствует шаблону регулярного выражения, вы также можете ввести часть имени процесса, например:
# pkill fire
Чтобы избежать «убийства» неправильных процессов, вы можете сделать «pgrep -l » в список подходящих процессов.
Pkill команда имеет гораздо больше вариантов, например если указать опцию «-u», то она позволит вам указать имя пользователя или ID. В этом примере мы посылаем сигнал TERM всем процессам, принадлежащие пользователю ‘nobody’:
# pkill -u nobody
Killall
Killall использует имя процесса, а вместо PID, и он «убивает» все экземпляры процесса с тем же именем. Например, если вы используете несколько экземпляров браузера Firefox, вы можете убить их всех с помощью команды:
# killall firefox
В Gnome, вы можете перезапустить Nautilus с помощью команды:
# killall nautilus
xkill
Xkill является графическим способом «убить» приложение. При вводе «XKill» в терминале, курсор мыши будет немедленно стать «крест». Все, что вам нужно сделать, это нажать «крест» на провинившихся приложение и он убьет приложение мгновенно. Если вы заинтересованы, вы можете добавить сочетание клавиш для включения функции XKill.
Create a Force-Kill Keyboard Shortcut
Want to save time closing unresponsive software? The best option is to create a keyboard shortcut. This will give you the immediate option to close an app, but it requires xkill for this to work.
In Ubuntu, open Settings > Keyboard and click on Shortcuts. Select Custom Shortcuts, then + to create a new shortcut. Input «xkill» for both Name and Command, then Apply. This will return you to the shortcuts list—select the shortcut, then press the required keyboard combination that you will use to call it.
Next time you need to close an app, just use the keyboard shortcut. The mouse pointer will become an X, and you can click anywhere on the app you want to close.
Specifying PID
To specify which process should receive the signal, use its numeric PID (process ID). To see a list of running processes, you can use the ps command.
Negative PID values may be used to indicate the process group ID, rather than the process ID. See the PGID column in the output of the ps command, e.g., with ps -eo user,pid,pgid,command. If you specify a process group ID as the target of a kill command, all processes in the group will receive the signal.
A PID of -1 is special. It indicates all processes except two: the kill process itself, and init (PID 1), which is the parent process of all processes on the system. Specifying -1 as the target will send the signal to all processes except these two.
Listing All Processes
For example, use the ‘ps -ef‘ command to list all the processes currently scheduled to run on the system.
# ps -ef | more
Here,
- UID: The username of the owner of the process
- PID: The unique process identification number of the process
- PPID: The parent process identification number of the process
- STIME:The time the process started (hh:mm:ss)
- TTY:The controlling terminal for the process. Note that system processes (daemons) display a question mark (?), indicating the process started without the use of a terminal.
- TIME: The cumulative execution time for the process
- CMD: The command name, options, and arguments
Kill Linux Applications Using the ‘top’ Command
The Linux top command provides a terminal task manager which lists all the running processes on the computer.
To kill a process within the top interface, press k and enter the process id next to the application you wish to close. The top command solicits a specific signal to send; in most cases, enter 15 (to request the process to gracefully terminate) or 9 (to immediately kill the process).
Linux supports signals that instruct a process to do something. Some common signals used in a shell session include:
- SIGINT 2: Interrupts the process, equivalent to Ctrl+C.
- SIGQUIT 3: Quits the process gracefully, if possible, leaving a core dump to aid in debugging. Invoked with Ctrl+\.
- SIGKILL 9: Kills the process immediately without allowing the process to gracefully perform shutdown or cleanup operations.
- SIGTERM 15: Terminates a process. The process force quits, but if it can clean up gracefully if the system permits it.
- SIGCONT 16: Continue executing after stopped by SIGSTOP.
- SIGSTOP 19: Stop the process, with the intent that it’ll later be resumed with SIGCONT.
- SIGTSTP 20: Pauses a process. Usually initiated by Ctrl+Z.
The process name or process number works with the kill command to send a specific signal to a process. For example, kill -9 1234 sends SIGKILL to process 1234.
Examples
- Java
- PE
- Xbox
- PS
- Nintendo
- Win10
- Edu
Example in Java Edition (PC/Mac) 1.13, 1.14, 1.15 and 1.16
To kill the player named Axe2Grind in Minecraft 1.13, 1.14, 1.15 and 1.16:
/kill Axe2Grind
To kill all slimes:
/kill @e
To kill all mobs but not kill any of the players (including yourself):
/kill @e
Example in Java Edition (PC/Mac) 1.11 and 1.12
To kill yourself in Minecraft 1.11 and 1.12:
/kill
To kill the player named Axe2Grind:
/kill Axe2Grind
To kill all cows within 20 blocks:
/kill @e
Example in Pocket Edition (PE)
To kill yourself in the game in Minecraft PE:
/kill
To kill the player named TheExcavator:
/kill TheExcavator
To kill all zombies:
/kill @e
Example in Xbox One Edition
To kill yourself in the game in Minecraft Xbox One Edition:
/kill
To kill the player named TheEarthMover:
/kill TheEarthMover
To kill all enderman:
/kill @e
Example in PS4
To kill yourself in the game in Minecraft PS4 Edition:
/kill
To kill the player named Axe2Grind:
/kill Axe2Grind
To kill all skeletons:
/kill @e
Example in Nintendo Switch Edition
To kill yourself in the game in Minecraft Nintendo Switch Edition:
/kill
To kill the player named Axe2Grind:
/kill Axe2Grind
To kill all guardians:
/kill @e
Example in Windows 10 Edition
To kill yourself in the game in Minecraft Windows 10 Edition:
/kill
To kill the player named TheExcavator:
/kill TheExcavator
To kill all husks:
/kill @e
Example in Education Edition
To kill yourself in the game in Minecraft Education Edition:
/kill
To kill the player named Axe2Grind:
/kill Axe2Grind
To kill all skeletons:
/kill @e
Conclusion
When apps misbehave and cause the system to hang, it is very tempting to restart the computer and start the session all over again. With these “kill” commands you will be able to better manage the misbehaving apps without them causing the system to crash. This is especially useful for a server when you don’t want a misbehaving process to bring the whole server down.
Image credit: Kill Bill (Gates)
Damien
Damien Oh started writing tech articles since 2007 and has over 10 years of experience in the tech industry. He is proficient in Windows, Linux, Mac, Android and iOS, and worked as a part time WordPress Developer. He is currently the owner and Editor-in-Chief of Make Tech Easier.
What is a PID?
A Linux or Unix process is running instance of a program. For example, Firefox is a running process if you are browsing the Internet. Each time you start Firefox browser, the system is automatically assigned a unique process identification number (PID). A PID is automatically assigned to each process when it is created on the system. To find out PID of firefox or httpd process use the following pidof command:
pidof httpd pidof apache2 pidof firefox |
OR use the combination of ps command and grep command/egrep command:
ps aux | grep httpd ps aux | grep apache2 ps aux | grep firefox |
Fig.01: Find the process ID (PID) of a running firefox program and apache2 server.
Синтаксис
Чтобы передать предварительно выбранный сигнал определенному процессу в Linux, рекомендуется воспользоваться специальной утилитой kill. Она имеет весьма простой синтаксис:
Здесь можно использовать любой сигнал, который представлен в вышеописанном списке. Если данный параметр не задать в команде, «по умолчанию» будет использован SIGTERM. Именно он практически моментально завершит выбранную вами программу.
К примеру, в операционной системе подключенный по ssh пользователь «ya». Нам необходимо завершить этот процесс, тем самым закрыть подключение по ssh с использованием утилиты kill. Первоначально требуется определить ее идентификатор с помощью команды «ps».
На экране вашего монитора появится окно, где в первом столбце прописано имя пользователя, во втором тот самый pid, который нужен для завершения процесса.
Как видно на скриншоте, pid который нам нужен 2590. Завершим подключение пользователя «ya» с помощью сигнала SIGTERM.
Бывают различные ситуации. В некоторых случаях после введения вышеописанной программы процесс продолжает висеть в ОС «Линукс». Проверить его наличие можно также с помощью утилиты «ps» (процесс ее запуска описан выше). В данном случае можно воспользоваться более действенным сигналом SIGKILL, где запрос идет непосредственно через ядро всей системы. Необходимо ввести – kill -KILL 20445.
После ведения такой команды рекомендуется снова запустить утилиту «ps». Если вы обнаружите, что процесс запущен от имени пользователя, которого завершали прцесс ( в нашем случае это ya), потребуется дополнительное использование утилиты «sudo».
Особенности завершения процесса с использованием команды «pkill»
Главная отличительная особенность данной утилиты – вместо идентификатора процесса требуется ввести имя программы. Синтаксис и поведение будет аналогичным.
Утилита «pkill» отсканирует директорию и самостоятельно найдет ID с аналогичным именем. Только после этого будет подан сигнал SIGTERM. Например, закроем программу mc.
Особенности завершения процесса с использованием команды «killall»
Такая утилита будет работать аналогично двум вышеописанным вариантам. Она также может понимать имя процесса, своевременно найдет его в директории.
При использовании утилит важно понимать, что к постановке задач требуется отнестись максимально ответственно. Если сделать что-то не правильно, могут возникнуть сбои в работе ОС «Линукс»
Avoid Unresponsive Software: Upgrade Your Hardware
Are unresponsive applications regularly causing problems? You could probably benefit from making some changes to your Linux computer.
Installing additional RAM is the number one way to give your computer more power and might be just the thing you need to keep those temperamental apps from becoming unresponsive in future.
So, the next time a Linux application or utility hangs and becomes unresponsive, all you need to do is apply one of these solutions:
- Click the X in the corner.
- Use the System Monitor.
- Use the xkill app.
- Employ the kill command.
- Close apps with pkill.
- Use killall to close software.
- Create a keyboard shortcut.
If none of these solutions works and you’re regularly experiencing unresponsive Linux apps, consider switching to a lightweight Linux operating system.
7 Sites All Parents Should Add to Their Block List Right Now
Have you blocked YouTube Kids yet? Here are several other websites all parents should block for the sake of their children.
About The Author
Deputy Editor for Security, Linux, DIY, Programming, and Tech Explained. He also produces The Really Useful Podcast and has extensive experience in desktop and software support.
A contributor to Linux Format magazine, Christian is a Raspberry Pi tinkerer, Lego lover and retro gaming fan.
More About Christian Cawley
Terminating a Process
There might be times when you need to terminate an unwanted process. A process might have got into an endless loop, or it might have hung. You can kill or stop any process that you own. You can use the following two commands to terminate one or more processes:– kill
– pkill
The kill and pkill commands send signals to processes directing them to terminate. Each signal has a number, name, and an associated event. Below are some of the most commonly used signals with their functionalities.
Number | Name | Description |
---|---|---|
1 | SIGHUP | Reload Configuration File |
2 | SIGINT | Interrupt by keyboard (ctrl+c) |
9 | SIGKILL | kill process |
15 | SIGTERM | End process immediately. (Terminate a process in controlled manner so cleanup is possible) |
18 | SIGCONT | Continue the process stopped with STOP |
19 | STOP | Stop process |
Note: However, there are processes that should not be terminated, such as the init process. Killing such processes can result in a system crash. A superuser can kill any process in the system.
Управление процессами
Максимальное количество процессов
Несмотря на то, что процессы создаются динамически, их максимальное количество ограничено. В ядре это ограничение представлено символом , объявленным в файле ./linux/kernel/fork.c. Его значение можно изменять из пользовательского пространства через файл /proc/sys/kernel/threads-max файловой системы proc.
Теперь перейдем к рассмотрению управления процессами в Linux. В большинстве случаев процессы создаются динамически и описываются динамически создаваемыми дескрипторами (экземплярами структуры ). Исключением является процесс , существующий всегда и описываемый — статически создаваемым дескриптором процесса, объявленным в файле ./linux/arch/i386/kernel/init_task.c.
В Linux существует два способа организации процессов. Первый способ основан на использовании хеш-таблицы, ключом которой является значение PID; второй способ использует кольцевой двусвязный список. Способ, использующий кольцевой список, идеален для последовательного перебора списка процессов. Поскольку кольцевой список не имеет начала и конца, за отправную точку можно принять дескриптор , который существует всегда. Рассмотрим пример перебора списка текущих задач.
Список задач недоступен из пользовательского пространства, но эту проблему легко решить путем добавления нашего кода в ядро в виде модуля. В листинге 2 приведен текст простейшей программы, осуществляющей перебор списка задач и выводящей немного информации о каждой из них (, и имя родительского процесса, указатель на дескриптор которого хранится в поле )
Обратите внимание на использование модулем вызова для вывода сообщений. Сообщения, выведенные модулем, можно будет найти в файле /var/log/messages и вывести на консоль с помощью утилиты (или для вывода сообщений в режиме реального времени)
Функция представляет собой макрос, объявленный в файле sched.h и предназначенный для облегчения перебора списка задач (возвращает указатель на дескриптор следующей задачи).
Листинг 2. Простой модуль ядра для вывода сведений о задачах (procsview.c)
#include <linux/kernel.h> #include <linux/module.h> #include <linux/sched.h> int init_module( void ) { /* Выбираем отправную точку */ struct task_struct *task = &init_task; /* Перебираем элементы списка задач, пока снова не встретим init_task */ do { printk( KERN_INFO "*** %s parent %s\n", task->comm, task->pid, task->parent->comm ); } while ( (task = next_task(task)) != &init_task ); return 0; } void cleanup_module( void ) { return; }
Скомпилировать этот модуль можно с помощью make-файла, приведенного в листинге 3.
После компиляции модуль можно загружать в ядро командой и выгружать командой .
Листинг 3. make-файл для сборки модуля ядра
obj-m += procsview.o KDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
После загрузки модуля в файле /var/log/messages появятся приведенные ниже сообщения. В их числе — информация о задаче бездействия системы (называемой ) и задаче (pid 1).
Nov 12 22:19:51 mtj-desktop kernel: *** swapper parent swapper Nov 12 22:19:51 mtj-desktop kernel: *** init parent swapper Nov 12 22:19:51 mtj-desktop kernel: *** kthreadd parent swapper Nov 12 22:19:51 mtj-desktop kernel: *** migration/0 parent kthreadd ...
Обратите внимание на сведения о текущей задаче. В Linux имеется символ , представляющий собой указатель на дескриптор текущего процесса (т.е
экземпляр структуры ). Если добавить в конец функции строку:
printk( KERN_INFO, "Current task is %s , current->comm, current->pid );
будет выведено сообщение:
Nov 12 22:48:45 mtj-desktop kernel: Current task is insmod
Заметим, что текущей задачей является , поскольку функция выполняется в контексте этой команды. Символ , в действительности являющийся указателем на функцию (), можно найти в архитектурно-зависимом заголовочном файле ./linux/include/asm-i386/current.h).
Заключение
Некоторые процессы не удается остановить под обычным пользователем. Например, если процесс был запущен от имени пользователя root или от имени другого пользователя системы, то команды kill и killall нужно выполнять от имени суперпользователя, добавляя sudo (в Ubuntu):
Бывают ситуации, когда вы работаете в графическом интерфейсе (например, GNOME) и вам не удается открыть эмулятор терминала, чтобы остановить зависший процесс. Тогда можно переключиться на виртуальную консоль клавишами Ctrl+Alt+F1, залогиниться в ней и выполнять команды уже из нее. А потом перейти обратно, нажав Ctrl+Alt+F7.
Справку по использованию любой команды можно получить командой man: