Отправляет email-рассылки с помощью сервиса Sendsay

[TC] Запустить задачу с определённым номером

Приветствую Всех.
Такая задачка под линуксом.
Надо запустить wget и чтоб он работал некоторое время, тоесть качал
аудиопоток, а потом через 20 минут его убить, тоесть остановить.
Ну запустить, то тут и cron справится.
а вот если убить, то как корректно убить именно тот wget, что был
запущен?
в то ж время может быть и запущен другой wget.
тоесть killall wget
тут не проходит.
Надо убивать по определённому номеру задачи.
через kill номер задачи.
Соответственно вопрос.
Можна ли как-то запустить wget, чтоб он имел определённый номер
задачи?
или как убить именно тот wget, что мне нужно.
в то ж время может быть и запущен другой wget, и как не попутать?
С почтением Андрей.

Ответить   Andrij Stegnitskiy Fri, 9 Dec 2011 14:22:24 +0200 (#2299244)

 

Ответы:

Всем привет!
09.12.2011 16:22, Andrij Stegnitskiy пишет:

У wget незнаю, но у curl есть параметр -m (в секундах :)), после чего он
автоматом обрывает соединение. Для возобновления закачки - -C
-- Chugaistyr

Ответить   Fri, 09 Dec 2011 18:20:19 +0400 (#2299438)

 

Здравствуйте, Chugaistyr.

Вы писали 9 декабря 2011 г., 16:20:19:

Но он просто будет висеть в памяти.
Так не подходит.
Надо именно чтоб убить процес, но для того надо знать его номер.
С почтением Андрей.

Ответить   Andrij Stegnitskiy Fri, 9 Dec 2011 16:40:50 +0200 (#2299459)

 

Приветствую всех.

Есть два разных понятия :
1. номер процесса (process id или pid) -- назначается системой при создании процесса;
2. номер задания (job id) -- назначается оболочкой при создании фонового задания.

Встроенный в оболочку вариант команды kill может принимать номер процесса и
номер задания, но номер задания должен предваряться знаком % (процент).
kill 10568 # по номеру процесса
kill %1 # по номеру задания

Задания (в контексте вашего вопроса) являются сущностями командной оболочки и
за ее пределами не существуют. Если командная оболочка завершает работу, то все
задания исчезают (а вот что происходит с процессами, которые были связаны с этими
заданиями, это отдельный вопрос).
Поэтому более универсальным является номер процесса (pid), а не номер задания.
При запуске -wget с ключом --background на консоль выводится pid, но с кучей
хлама, который нужно отфильтровать.

Успехов. Анатолий.

Ответить   "i_chay" Fri, 9 Dec 2011 19:45:56 +0400 (#2299549)

 

Здравствуйте, i_chay.

Вы писали 9 декабря 2011 г., 17:45:56:

а просто так не отфильтруешь. grep тут не поможет.
Вот если б при запуске ему принудительно присвоить номер процеса, то
было б проще.
Но просто неизвесно, можна ли при запуске пользователю присваивать
номер процеса.
С почтением Андрей.

Ответить   Andrij Stegnitskiy Fri, 9 Dec 2011 17:54:13 +0200 (#2299566)

 

Приветствую всех.

grep не единственная программа-фильтр, присутствующая в системе. Есть, например,
tr.
Требуемая строка выглядит примерно так:
wget --background http://site.com/ | grep pid | tr -cs "[:digit:]" "[\n*]"

На выходе будет pid.

Сказал уже: номер процесса присваивает система.

Успехов. Анатолий.

Ответить   "i_chay" Fri, 9 Dec 2011 21:45:02 +0400 (#2299797)

 

Приветствую всех.

Кстати, присвойте программе при запуске (или заранее) другое имя и пользуйтесь
killall.
Другое имя можно присвоить, например, созданием ссылки (команда ln).

Успехов. Анатолий.

Ответить   "i_chay" Sat, 10 Dec 2011 19:16:11 +0400 (#2301160)