- Есть остановленные задания (на выходе bash)
- Есть остановленные задания (при выходе из bash)
- 2 ответа
- This occurs when logout.
- Intelligent Recommendation
- Deployment of cron jobs in Linux
- Linux unit two jobs
- Ctrl + z and Linux jobs
- Linux regularly executes jobs
- Sessions and jobs in Linux
- More Recommendation
- Linux background jobs
- Linux jobs and processes
- Stopped
- Linux Jobs Suggestion | Linux China
- «Master of Windows Game Programming Skills» creates DirectDraw knowledge notes on DirectDraw
- Thread: What to do about the «stopped jobs» while closing a terminal?
- What to do about the «stopped jobs» while closing a terminal?
- Re: What to do about the «stopped jobs» while closing a terminal?
- Re: What to do about the «stopped jobs» while closing a terminal?
- Re: What to do about the «stopped jobs» while closing a terminal?
- Re: What to do about the «stopped jobs» while closing a terminal?
- Управление заданиями
- Остановка заданий
- Advanced нумерация заданий
- Ожидание завершения фоновых задач
- Команда disown
Есть остановленные задания (на выходе bash)
Я получаю сообщение, There are stopped jobs. когда пытаюсь иногда выйти из оболочки bash. Вот воспроизводимый сценарий в Python 2.x:
- ctrl + c обрабатывается интерпретатором как исключение.
- ctrl + z «останавливает» процесс.
- ctrl + d выход из питона для реалов.
Вот некоторые из реальных выводов терминала:
Баш не exit вышел , я должен снова выйти из оболочки Баш.
- В: Что такое «остановленная работа» или что это значит?
- В: Можно ли возобновить остановленный процесс?
- Q: Первый exit убивает остановленные задания?
- Q: Есть ли способ выйти из оболочки в первый раз? (без ввода exit дважды)
Остановленное задание — это задание, которое было временно переведено в фоновый режим и больше не выполняется, но все еще использует ресурсы (т. Е. Системную память). Поскольку это задание не подключено к текущему терминалу, оно не может произвести вывод и не получает ввод от пользователя.
Вы можете увидеть выполняемые вами задания, используя jobs встроенную команду в bash, возможно, и другие оболочки. Пример:
Вы можете возобновить остановленную работу с помощью fg встроенной команды (на переднем плане) bash. Если у вас есть несколько команд, которые были остановлены, вы должны указать, какую из них возобновить, передав в командной строке номер спецификаций заданий fg . Если остановлена только одна программа, вы можете использовать fg только:
В этот момент вы вернулись в интерпретатор python и можете выйти, используя control-D.
И наоборот, вы можете kill использовать команду с указанием ее задания или PID. Например:
Чтобы использовать спецификацию заданий, перед числом введите клавишу процента (%):
Если вы выполните команду выхода с остановленными заданиями, появится предупреждение, которое вы увидели. Работы будут оставлены для безопасности. Это делается для того, чтобы вы знали, что пытаетесь убить работу, о которой забыли, что остановились. При втором использовании команды выхода задания завершаются, и оболочка завершается. Это может вызвать проблемы для некоторых программ, которые не предназначены для уничтожения таким способом.
В bash кажется, что вы можете использовать logout команду, которая убьет остановленные процессы и завершит работу. Это может привести к нежелательным результатам.
Также обратите внимание, что некоторые программы могут не завершиться таким образом, и ваша система может закончить множеством потерянных процессов, используя ресурсы, если вы сделаете это привычкой.
Обратите внимание, что вы можете создать фоновый процесс, который остановится, если потребуется ввод данных пользователем:
Вы можете возобновить и убить эти задания так же, как вы выполняли задания, которые были остановлены с помощью Ctrl-z прерывания.
Источник
Есть остановленные задания (при выходе из bash)
Я получаю сообщение There are stopped jobs. . Вот воспроизводимый сценарий в python 2.x:
- ctrl + c обрабатывается интерпретатором как исключение.
- ctrl + z «останавливает» процесс.
- ctrl + d завершает работу python для реалов.
Вот какой-то реальный вывод терминала:
Bash не вышел, я должен exit снова, чтобы выйти из оболочки bash.
- Q: Что такое «остановленная работа» или что это означает?
- Q: Можно ли возобновить приостановленный процесс?
- Q: Выключает ли первый exit остановленные задания?
- Q: Есть ли способ выйти из оболочки в первый раз? (без ввода exit дважды)
2 ответа
Задержанное задание — это тот, который был временно помещен в фоновый режим и больше не работает, но все еще использует такие ресурсы (например, системную память). Поскольку это задание не подключено к текущему терминалу, оно не может выдавать выходные данные и не получает вход от пользователя.
Вы можете видеть задания, которые выполнялись с помощью команды jobs builtin в bash, возможно, других оболочек. Пример:
Вы можете возобновить остановленное задание с помощью встроенной команды bash fg (foreground) bash. Если у вас несколько остановленных команд, вы должны указать, какой из них нужно возобновить, передав номер задания в командной строке с помощью fg . Если только одна программа остановлена, вы можете использовать только fg :
В этот момент вы вернулись в интерпретатор python и можете выйти с помощью control-D.
И наоборот, вы можете kill команду с ее спецификацией jobs или PID. Например:
Чтобы использовать спецификацию jobs, перед номером с помощью клавиши процента (%):
Если вы выдаете команду exit с остановленными заданиями, будет выдано предупреждение. Работы будут оставлены для обеспечения безопасности. Это необходимо, чтобы вы знали, что пытаетесь убить задания, о которых вы, возможно, забыли, остановились. Во второй раз, когда вы используете команду exit, задания завершаются и оболочка завершается. Это может вызвать проблемы для некоторых программ, которые не предназначены для убийства таким образом.
В bash, кажется, вы можете использовать команду logout , которая будет убивать остановленные процессы и завершать работу. Это может привести к нежелательным результатам.
Также обратите внимание, что некоторые программы не могут выйти при завершении таким образом, и ваша система может закончиться большим количеством сиротских процессов, используя ресурсы, если вы привыкли делать это.
Обратите внимание, что вы можете создать фоновый процесс, который остановится, если он потребует ввода пользователем:
Вы можете возобновить и убить эти задания так же, как и задания, которые вы остановили с помощью прерывания Ctrl-z .
В: Что такое «остановленная работа» или что это означает?
Остановленное задание означает процесс, который получил сигнал останова ( SIGSTOP / SIGTSTP ) с клавиатуры (suspend character Ctrl-Z ), команда (например, kill -STOP [PID] ) или другой процесс (например, ядро, когда системе не хватает ресурсов), и он находится в состоянии паузы, поэтому он сообщает системе прекратить /приостановить процесс, чтобы он не выполнял любое выполнение /обработка.
Активные задания оболочки могут быть перечислены: jobs .
В: Может ли возобновленный процесс возобновиться?
Прекращенный процесс возобновит выполнение, только если он отправит сигнал SIGCONT . Это может быть достигнуто либо с помощью fg (или fg ID )), который переместит задание на передний план, сделав его текущим заданием, bg , чтобы продолжить это в фоновом режиме или путем отправки сигнала SIGCONT (например, kill -CONT [PID] )).
Q: Первый выход убил остановленные задания?
В первый раз, когда вы вводите exit / logout или нажмите Ctrl-D , оболочка печатает предупреждающее сообщение о текущих активных заданиях, которые связанный с вашим терминалом, поэтому он не убьет вас без вашего разрешения, подтвердив действие во второй раз. Если параметр checkjobs включен ( shopt -s checkjobs ), он также может отображать задания со своими статусами.
Q: Есть ли способ выйти из оболочки в первый раз? (без двойного выхода)
Вы можете нажать Ctrl + D дважды, или удерживать его дольше, это приведет к выходу из оболочки тихо, быстро убив текущие остановленные /выполняемые задания.
Альтернативно отключите их ( disown ), чтобы оставить их или убить их вручную: kill $(jobs -p) .
Источник
This occurs when logout.
Need to close jobs
See what else is hanged
The result is about the same
Just fine. 1 is the previous ID
Intelligent Recommendation
Deployment of cron jobs in Linux
Cron is the default scheduled task in Linux. With cron, you can schedule a plan (such as a command or shell script) to run periodically or at specific times such as minutes, hours, days, weeks, months.
Linux unit two jobs
>> 1. Create files with commands and regular expressions as required *) Create 12 files WESTOS_classX_linuxY with one command (X has a value range of 1-2 and .
Ctrl + z and Linux jobs
Recently, in the process of using the star agent, it is not convenient to open the window in webssh, which is not as convenient as the multi-window tool originally used locally. However, this situatio.
Linux regularly executes jobs
Linux systems use the cron program to schedule jobs to be executed regularly. The cron program will run in the background and check a special table (called a cron schedule) to learn about the jobs sch.
Sessions and jobs in Linux
•process:LinuxIndependent program running by itself Interactive process: by ashellThe started process can run in the foreground or in the background Batch process: it is a sequence of processes, .
More Recommendation
Linux background jobs
Original link: https://github.com/fupengfei058/article-collection/blob/master/Linux%E5%90%8E%E5%8F%B0%E4%BD%9C%E4%B8%9A.md Preface Developers who often play under linux will definitely often encounter.
Linux jobs and processes
1. Processing signal Linux uses signals to communicate with processes running in the system. The signal of the process is a predefined message. The process can recognize it and decide whether to ignor.
Stopped
Stopped changing. Farewell to OI. The reality requires me to cope with advance recruitment. Only a good high school can learn OI. Goodbye.To commemorate this. If I can enroll in Jiahe Middle School in.
Linux Jobs Suggestion | Linux China
Through careful study of the recruitment website data, we found that even very experienced Linux programmers will be in trouble during the interview. — Andrea W.codingly Useful original link please v.
«Master of Windows Game Programming Skills» creates DirectDraw knowledge notes on DirectDraw
1. DirectDraw This is probably the most important technology in Directx, because it is the channel on which 2D graphics depend. It is also the frame buffer layer on which Direct3D is built. 2. .
Источник
Thread: What to do about the «stopped jobs» while closing a terminal?
Thread Tools
Display
What to do about the «stopped jobs» while closing a terminal?
When my work is completed, I generally press ctrl+D to close my terminal. Sometimes I get a comment that «there are stopped jobs» and the terminal is not closed. If I press ctrl+D again, the same comment may appear or sometimes the terminal is closed. Why does this happen? Does this mean that I made a mistake in closing some application? How to rectify that at this stage?
Second, is it safe to use kill -9 command to the PID of running application got from ps -aux command?
Re: What to do about the «stopped jobs» while closing a terminal?
Take a look at post.#4 of this thread.
You can list the stopped jobs by doing:
Last edited by papibe; March 27th, 2012 at 05:42 AM . Reason: added kill example.
Re: What to do about the «stopped jobs» while closing a terminal?
However I am not sure if this way of killing a job by issuing a command (kill %jobno.) is harmful or not. Now a days I am using a newly installed mathematics program where even after exiting it, I am getting the «there are stopped jobs» warning at the time of exiting terminal. I am a bit suspicious; exiting a program suitably should completely stop all the related processes. Now if some of these remain alive even after exiting and I «kill» those processes, will it not be harmful for the computer in the long run?
If we simply switch off the UPS, the computer will obviously stop but that is not the way we do. We «shut down» the machine and the machine stops after all the running processes are sequentially stopped. Switching off the machine will severely affect the machine in the long run. May be I am messing up things but can anybody please clarify?
Re: What to do about the «stopped jobs» while closing a terminal?
I’m pretty sure that ‘kill’ just sends a signal to the program to close, it doesn’t force it shut immediately but rather allows it to shut down gracefully.
‘kill -9’, however, does shut down a program instantly; and should only be used on misbehaving programs (that refuse to close with a regular ‘kill’ command).
Re: What to do about the «stopped jobs» while closing a terminal?
«kill -15» tells a program to shut down «gracefully.» It’s the preferred choice to stop a job. If that doesn’t work, you can resort to -9 and terminate it «with extreme prejudice.»
Still I’d suggest you look into why you have those stopped jobs. Perhaps they are child processes spawned by your math program. Do they only happen when you use this program? What happens if you type «fg» at the prompt after the «there are stopped jobs» error?
Источник
Управление заданиями
Наверное всякий nix-оид знает что запуская команду с амперсандом на конце — она уходит в фон, продолжая работу.
Таким образом запущенная команда превращается в job (задание).
Более продвинутые знают что можно вывести список запущенных заданий командой jobs, и переключиться между ними командами fg (вывести фоновую задачу в оболочку)/ bg (отправить остановленное задание в фон). Остальными командами пользуются куда реже, а большинство начинающих линуксоидов про них читали мельком, но забыли, или вообще никогда не знали. А между прочим кроме: jobs, fg и bg есть disown, wait и даже kill.
Не считая тех, что можно использовать внутри задания или для управления написанными выше командами: enable, builtin.
Итак если вам интересно как делается:
1. Приостановка job-в. Остановка (kill).
2. Запуск ранее приостановленного job-а.
3. Advanced нумерация заданий.
4. Ожидание завершения фоновых задач.
5. Команда disown.
Запустим три задания:
$ nice gzip /dev/null &
[1] 15727
$ bzip2 /dev/null &
[2] 15728
$ xz /dev/null &
[3] 15730
Три задания, с номерами 1, 2, 3. и их PID-ами.
Остановка заданий
Приостановка
Приостанвим задание, например первое:
это сделает команда kill, передавая сигнал SIGSTOP.
В данном случае использовалась внутренняя команда bash-а: kill, а не внешняя программа /bin/kill.
Да, /bin/kill тоже можно использовать для того чтобы передать сигнал SIGSTOP, но внешняя программа не умеет обращаться с номером задания, ей подавай PID.
В линуксе еще достаточно удобно: 4-5 значный PID (2 байта), но в AIX-е pid-ы в основном 8значные PIDы, а могут иметь и 9 цифр, к тому же не последовательны, а разбросаны по своему 4байтному диапазону.
Сигнал SIGSTOP — это один из трех сигналов которые приложение не может игнорировать (SIGSTOP, SIGCONT, SIGKILL который обычно 9). Да, конечно у каждого из них есть и числовой код (например kill -9 означает kill -SIGKILL), но не на всех платформах они совпадают. Узнать их соответствие можно или из документации (man signal/man 7 signal/man kill), или прямо (внутренней)командой kill -l.
Завершение задания
Аналогично:
kill -SIGKILL %1 или PID процесса.
Запуск приостановленного ранее
bg %1 — отправка приостановленного задания выполняться в фон.
fg %1 — переключение в остановленное (или запущенное задание)
Еще вариант: переключиться в это задание и остановить его Ctrl+Z:
Advanced нумерация заданий
Вот у меня продолжают сжимать нули три процесса:
Первое поле в квадратных скобках — номер job-а. К нему можно обратиться такими командами как fg, bg, kill (внутренней), disown, wait.
Второе поле: имеет — (минус) для 2го задания и + (плюс) для 3го — это номера заданий в нотации: «Последнее» и «Текущее».
Текущее — это то «с которым мы работаем сейчас». Если у нас запущенно одно задание — то только оно будет иметь +. Если мы переключимся на другое задание командой fg — оно станет «текущим». Команды fg и bg без номера заданий будут работать с Текущим. К нему можно также обратиться через %+ или %%
Последнее — это то, которое было перед «Текущим». Если мы завершим текущее (kill -9 %% ) — то Последнее станет Текущим. Этакий стек заданий. К нему можно обратиться через %-
Также для команд fg, bg, kill, disown, wait к заданиям можно обратиться через имя запускаемой команды:
запустим еще sleep
Убъет только одно задание, который начинается на x (у меня пострадает архивация командой xz)
убьет команду, которая содержит gzip. ( Такой процесс у меня тоже только один), а если маска такая, что в неё входит несколько заданий (например в предыдущей команда kill -9 #?zip, то такое не получится, т.к. и nice gzip и bzip2 попадают под такую маску, и нельзя точно определить к какому заданию относится команда. Хотя странно: для fg то еще можно понять что нужен один аргумент, а kill может принимать несколько аргументов, bg не может но мог бы, но в общем все команды не могут разобраться c неоднозначными масками)
Подробнее смотрите таблицу из ABS Guide
enable и builtin
Тут то и следует рассказать о командах enable и builtin:
Из ссылки выше:
Конструкция builtin BUILTIN_COMMAND запускает внутреннюю команду «BUILTIN_COMMAND», на время запрещая использование функций и внешних системных команд с тем же именем.
enable Либо запрещает, либо разрешает вызов внутренних команд. Например, enable -n kill запрещает использование внутренней команды kill, в результате, когда интерпретатор встретит команду kill, то он вызовет внешнюю команду kill, т.е. /bin/kill.
Внутренние команды вызываются быстрее чем внешние, полноценные программы, хотя бы потому, что нет необходимости форкать дочерний процесс, переключаться между ними. Список внутренних команд можно посмотреть enable -a.
Ожидание завершения фоновых задач
Команда wait — приостанавливает работу сценария до тех пор пока не будут завершены все фоновые задания или пока не будет завершено задание/процесс с указанным номером задания/PID процесса. Возвращает код завершения указанного задания/процесса.
Часто используется для синхронизации процессов: запустить один или несколько задач в фоне (параллельно), дождаться их завершения, и продолжить следующую фазу.
Запустит одновременно закачку по списку всех url, и только когда будет завершатся все закачки — перекинет их на флешку.
Команда disown
disown — Удаляет задание из таблицы активных заданий командной оболочки. Т.е. процесс продолжает работать в фоновом режиме, но уже не является заданием.
Полезно процессам запущенных командой nohup — она перехватывает сигнал SIGHUP, а также забирает потоки вывода к себе в файл nohup.out.
Также есть команды: suspend, times и logout, и times.
Например times %N — выводит накопленное время в userspace и system для job-а и текущей оболочки. Suspend приостаналивает текущую оболочку, как это можно было бы сделать нажав ctrl+Z для другой команды, но при условии что текущая оболочка работает не в режиме login shell. Но даже не представляю как их можно применять.
Источник