2009-12-01 4 views
10

Я создал работу с командой at на Solaris 10.Список и убить на работу в UNIX

Это сейчас работает, но я хочу, чтобы убить его, но я не знаю, как я могу найти номер задания и как убить эту работу или процесс.

+2

Сначала сделайте 'man ps'. Прочтите это. Затем обновите свой вопрос на основе прочитанного. –

+1

S.Lott: 'at' jobs - это не то же самое, что процессы. –

+0

работа выполняется в фоновом режиме, когда я запускаю ps -ef, я вижу некоторые процессы, выполняющие мои команды, которые мой скрипт bash содержит эти команды, его запускают 15 секунд сразу и обрабатывает идентификаторы, всегда меняющиеся при запуске ps -ef и i не удалось убить с kill process_id – soField

ответ

13

Вы должны быть в состоянии найти свою команду с ps вариант, как:

ps -ef 
ps -fubob # if your job's user ID is bob. 

Затем, когда находится, он должен попробуйте использовать kill, чтобы убить процесс (разрешения).

Если вы говорите о том, чтобы избавиться от рабочих мест в at очереди (которые еще не работает), вы можете использовать atq, чтобы перечислить их и atrm, чтобы избавиться от них.

+0

он не находится в очереди, когда он запускает задание каждые 15 секунд сразу – soField

+0

Если у вас есть процесс, выполняющий другие задания (новые каждые 15 секунд), сначала нужно сначала убить верхний уровень, чтобы поведение остановилось. Это все еще использует ps, чтобы найти его и убить, чтобы его прекратить. – paxdiablo

+0

задание верхнего уровня тоже меняется, и получение нового идентификатора каждые 15 секунд – soField

8

Чтобы удалить задание, которое еще не запущено, вам нужна команда atrm. Вы можете использовать команду atq, чтобы получить ее номер в списке.

Чтобы убить работу, которая уже начала работать, вам необходимо вычленить информацию его с помощью:

ps -eaf | grep <command name> 

, а затем использовать kill, чтобы остановить его.

Более быстрый способ сделать это на большинстве систем:

pkill <command name> 
1

Первый

ps -ef 

список всех процессов. Обратите внимание на номер процесса, который вы хотите убить. Затем

kill 1234 

Вы заменяете 1234 номер процесса, который вы хотите.

В качестве альтернативы, если вы абсолютно уверены в том, что есть только один процесс с определенным именем, или вы хотите, чтобы убить несколько процессов, которые разделяют то же имя

killall processname 
+1

'killall' работает в Linux, но обратите внимание, что на некоторых системах, таких как Solaris, на самом деле * убивает все процессы *, которые, вероятно, не то, что вы хотите. –

+1

Вау, Solaris - DUMB. Зачем вам это делать? Это похоже на наличие псевдонима для 'rm -rf /' – polvoazul

2

at -l в список рабочих мест, что дает вернуться как это:

age2%> at -l 
11  2014-10-21 10:11 a hoppent 
10  2014-10-19 13:28 a hoppent 

atrm 10 убивает Job 10

Или так мой сисадмин сказал мне, и это