Поради по Linux: Управління тривалістю виконання запланованих завдань

  1. Серія контенту:
  2. Цей контент є частиною серії: Поради по Linux
  3. Вам потрібні інші поради по Linux?
  4. процес таймера
  5. Listing 1. First attempt using runclock1.sh
  6. Малюнок 1. Звичайні годинник xclock
  7. Батьківські, дочірні і «осиротілі» процеси
  8. Listing 2. Gathering diagnostic information runclock2.sh
  9. Завершення дочірнього процесу
  10. Listing 3. Signals on a Fedora Core 5 system
  11. Listing 4. Terminating the child process using runclock3.sh
  12. Listing 5. Verifying the termination of child processes
  13. Listing 6. Ways to specify signals with the kill command
  14. Інші умови завершення
  15. Listing 7. Capturing images one second apart
  16. Малюнок 2. Ті, що йдуть годинник xclock
  17. Сигнали і переривання
  18. Listing 8. Process information for runclock3.sh
  19. Listing 9. Trapping signals with runclock4.sh
  20. Listing 10. Stopping runclock4.sh in different ways
  21. будильник
  22. Listing 11. Starting rhythmbox with the WCPE Ogg Vorbis stream
  23. Listing 12. The alarm clock - alarmclock.sh
  24. Listing 13. Sample crontab to run your alarm clock
  25. додаткова інформація
  26. Ресурси для скачування

Поради по Linux

Як зупинити виконання завдання через певний час

Серія контенту:

Цей контент є частиною # з серії # статей: Поради по Linux

https://www.ibm.com/developerworks/ru/views/global/libraryview.jsp?series_title_by=Советы+по+linux

Слідкуйте за виходом нових статей цієї серії.

Цей контент є частиною серії: Поради по Linux

Слідкуйте за виходом нових статей цієї серії.

Системи Linux® і UNIX® дозволяють планувати виконання завдань у майбутньому - одноразово або регулярно за розкладом. Читачі, які ознайомилися з недавнім радою, Планування завдань за допомогою cron та at , Цікавляться, як записувати телевізійні та радіопрограми і зупиняти запис після їх закінчення. Мені нагадали про італійця Етторе Бугатті, який робив відмінні автомобілі в Ельзас-Лотарингії. Коли клієнти запитували його про те, чому він використовує гальма з тросовим приводом, тоді як інші автовиробники перейшли на гідравліку, Бугатті відповідав "Месьє, я роблю автомобілі для того, щоб їздити, а не щоб зупинятися". Ця рада розповідає про те, як оснастити «гальмами» заплановані завдання.

Вам потрібні інші поради по Linux?

Подивіться на поради, які ми зібрали для вас:

Не знайшли те, чого шукали? Проголосуйте за цей сайт і дайте нам знати про це, і може бути, ми зможемо зробити рада для вас!

Для завершення завдання через певний час або після виконання інших умов зазвичай потрібно мати один процес, який запускає завдання і інший, який контролює виконання умов завершення. З цієї ради ви дізнаєтеся, як створити процес, керуючий часом при роботі завдання. Також ви дізнаєтеся, як використовувати сигнали і переривання для завершення однієї з цих завдань, якщо інша завершилася завчасно.

процес таймера

Основним інструментом для роботи з часом в сценаріях командного процесора є команда sleep, яка призводить до зупинки виконання сценарію на зазначений час. За замовчуванням час зупинки задається в секундах, однак можна вказувати значення часу з символами s, m або h для позначення секунд, хвилин або годин відповідно. Ця команда приводить до зупинки командного процесора, тому завдання необхідно виконувати в іншому командному процесорі, чого можна досягти, запустивши завдання у фоновому режимі за допомогою символу &.

Для початку припустимо, що ви бажаєте запустити команду на 10 хвилин. У лістингу 1 показаний сценарій bash, за допомогою якого ви можете спробувати запустити команду xclock на вказаний період часу. Спробуйте виконати його в своїй системі.

Listing 1. First attempt using runclock1.sh

#! / Bin / bash runtime = $ {1: -10m} # Run xclock in background xclock & #Sleep for the specified time. sleep $ runtime echo "All done"

Ви побачите годинник, схожі на наведені на рисунку 1.

Малюнок 1. Звичайні годинник xclock
Поради по Linux   Як зупинити виконання завдання через певний час   Серія контенту:   Цей контент є частиною # з серії # статей: Поради по Linux   https://www

Єдина помилка в такому підході полягає в тому, що сценарій зупинився, але годинник йде.

Батьківські, дочірні і «осиротілі» процеси

У лістингу 2 показаний вдосконалений сценарій runclock2.sh, який фіксує певну інформацію про ідентифікатори процесів командного процесора і xclock, а також результат роботи сценарію і результат виконання команди ps, що показує стан процесу xclock після завершення виконання командного процесора.

Listing 2. Gathering diagnostic information runclock2.sh

[Ian @ attic4 ~] $ cat runclock2.sh #! / Bin / bash runtime = $ {1: -10m} mypid = $$ # Run xclock in background xclock & clockpid = $! echo "My PID = $ mypid. Clock's PID = $ clockpid" ps -f $ clockpid #Sleep for the specified time. sleep $ runtime echo "All done" [ian @ attic4 ~] $ ./runclock2.sh 10s My PID = 8619. Clock's PID = 8620 UID PID PPID C STIME TTY STAT TIME CMD ian 8620 8619 0 19:57 pts / 1 S + 0:00 xclock All done [ian @ attic4 ~] $ ps -f 8620 UID PID PPID C STIME TTY STAT TIME CMD ian 8620 1 0 19:57 pts / 1 S 0:00 xclock

Зверніть увагу, що ідентифікатор батьківського процесу (PPID) першого виклику ps - 8619, він же є ідентифікатором процесу (PID) сценарію. Після завершення роботи сценарію процес годин стає «осиротілим» і призначається дочірнім процесу init- процесу 1. Дочірній процес не завершується автоматично по завершенні батьківського процесу, хоча при виході з системи завершення відбувається.

Завершення дочірнього процесу

Рішенням проблеми незавершених дочірніх процесів є їх явне завершення за допомогою команди kill. Вона відправляє процесу сигнал, що зазвичай призводить до його завершення. Нижче ви побачите, як процес може перехоплювати сигнали і не завершуватися, але тут ми завершуємо процес годин за допомогою сигналу переривання (SIGINT).

Щоб побачити перелік сигналів, доступних у вашій системі, можна виконати команду kill з параметром -l, як показано в лістингу 3. Зверніть увагу, що деякі сигнали є загальними для всіх систем Linux, тоді як інші залежать від архітектури певної машини. Деякі, наприклад, помилка при операціях з плаваючою комою (SIGFPE) або порушення сегментації (SIGSEGV), формуються системою, тоді як інші, наприклад, переривання (SIGINT), сигнали користувача (SIGUSR1 або SIGUSR2) або безумовне завершення (SIGKILL), можуть надсилатися додатками.

Listing 3. Signals on a Fedora Core 5 system

[Ian @ attic4 ~] $ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14 ) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN + 1 36) SIGRTMIN + 2 37) SIGRTMIN + 3 38) SIGRTMIN + 4 39) SIGRTMIN + 5 40) SIGRTMIN + 6 41) SIGRTMIN + 7 42) SIGRTMIN + 8 43) SIGRTMIN + 9 44) SIGRTMIN + 10 45) SIGRTMIN + 11 46) SIGRTMIN + 12 47) SIGRTMIN + 13 48) SIGRTMIN + 14 49) SIGRTMIN + 15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX- 11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX- 1 64) SIGRTMAX

Зверніть увагу, що в лістингу 2 ми отримували PID процесу xclock за допомогою змінної командного процесора $! . У лістингу 4 показано, як використовувати цю інформацію для того, щоб відправити сигнал завершення (SIGTERM) процесу xclock і завершити його.

Listing 4. Terminating the child process using runclock3.sh

[Ian @ attic4 ~] $ cat ./runclock3.sh #! / Bin / bash runtime = $ {1: -10m} mypid = $$ # Run xclock in background xclock & clockpid = $! echo "My PID = $ mypid. Clock's PID = $ clockpid" ps -f $ clockpid #Sleep for the specified time. sleep $ runtime kill -s SIGTERM $ clockpid echo "All done"

У лістингу 5 показаний результат виконання runclock3.sh. Остання команда kill підтверджує, що процес xclock (PID 9285) дійсно був завершений.

Listing 5. Verifying the termination of child processes

[Ian @ attic4 ~] $ ./runclock3.sh 5s My PID = 9284. Clock's PID = 9285 UID PID PPID C STIME TTY STAT TIME CMD ian 9285 9284 0 22:14 pts / 1 S + 0:00 xclock All done [ian @ attic4 ~] $ kill -0 9285 bash: kill: (9285) - No such process

Якщо ви опускаєте вказівку сигналу, за замовчуванням подається сигнал SIGTERM. Частина назви сигналу SIG необов'язкова. Замість того щоб використовувати -s і вказувати назву сигналу, ви можете просто поставити - перед номером сигналу, тому всі чотири форми завершення процесу 9285, показані в лістингу 6, еквівалентні. Зверніть увагу, що спеціальне значення -0, використане в наведеному вище лістингу 4, перевіряє, чи можна посилати сигнали процесу.

Listing 6. Ways to specify signals with the kill command

kill -s SIGTERM 9285 kill -s TERM 9285 kill -15 9285 kill 9285

Якщо вам просто потрібен одноразовий таймер для управління додатком, як в попередньому прикладі, можна використовувати команду timeout, що входить до складу пакету мережевих утиліт AppleTalk (Netatalk). Можливо, вам доведеться встановити цей пакет (подробиці можна знайти нижче в розділі ресурси ), Оскільки до складу більшості збірок цей пакет не входить.

Інші умови завершення

Тепер у вас є базові інструменти, що дозволяють запустити процес на фіксований час. Перш ніж заглиблюватися в тему обробки сигналів, давайте розглянемо, як працювати з іншими ситуаціями, коли потрібно завершення роботи завдання - наприклад, при періодичної фіксації інформації протягом кінцевого часу, яку необхідно завершити при досягненні файлом певного розміру або коли в файлі з'явиться певна рядок. Такі завдання найкраще виконувати в циклі, наприклад, за допомогою for, while або until, при цьому цикл виконується періодично з певною затримкою, що реалізовується за допомогою команди sleep. Якщо вам потрібно більш точне зазначення часу (з точністю менше секунди), можна використовувати команду usleep.

Ви можете додати до годинника секундну стрілку і налаштувати кольору. Побачити доступні назви кольорів можна за допомогою команди showrgb. Припустимо, ви використовували команду xclock -bg Thistle -update 1 & для повторного запуску годинника з секундною стрілкою і бузковим фоном.

Тепер ви можете за допомогою циклу фіксувати зображення годинника кожну секунду, а потім зібрати зображення в анімований GIF. У лістингу 7 показано, як за допомогою команди xwininfo знайти ідентифікатор вікна для команди xclock. Після цього за допомогою інструменту командного рядка ImageMagick захопимо 60 зображень годин з інтервалом в одну секунду (детальну інформацію про ImageMagick можна знайти в розділі ресурси ). Нарешті, зберемо зображення в нескінченно повторюється анімований GIF величиною в 50% від початкового розміру годин.

Listing 7. Capturing images one second apart

[Ian @ attic4 ~] $ cat getclock.sh #! / Bin / bash windowid = $ (xwininfo -name "xclock" | grep ' "xclock"' | awk '{print $ 4}') sleep 5 for n in `seq 10 69`; do import -frame -window $ windowid clock $ n.gif & sleep 1s # usleep 998000 done convert -resize 50% -loop 0 -delay 100 clock? [0-9] .gif clocktick.gif [ian @ attic4 ~] $. /getclock.sh [ian @ attic4 ~] $ file clocktick.gif clocktick.gif: GIF image data, version 89a, 87 x 96

Заміри часу такого роду завжди схильні до деяких варіацій, тому команда import, що виконує захоплення зображень, запускається у фоновому режимі, що дозволяє основним командному процесору контролювати час. Однак і в цьому випадку можливе деяке відхилення, тому що для запуску кожного командного процесора в фоновому режимі все одно потрібен певний час. У прикладі також реалізована п'ятисекундна затримка на початку, щоб дозволити сценарієм запуститися і дати вам час натиснути на годинник, щоб перевести їх на передній план. Незважаючи на всі застереження, в результаті одного з запусків я отримав одну пропущену секунду і зайву копію першої секунди, оскільки для виконання сценарію знадобилося трохи більше 60 секунд. Один із способів вирішення цієї проблеми - використання команди usleep із зазначенням часу в мікросекундах. Це час менше однієї секунди досить, щоб врахувати додаткові витрати, як зазначено в закоментувавши рядку сценарію. Якщо все піде як планувалося, результуюче зображення буде мати вигляд, схожий на Малюнок 2.

Малюнок 2. Ті, що йдуть годинник xclock

У цьому прикладі показується, як можна зняти певну кількість знімків деякого стану системи з регулярними інтервалами. Використовуючи наведені тут методики, можна знімати моментальні копії та інших ситуацій в системі. Ви можете захотіти перевірити результуючий файл, щоб переконатися, що він не перевищує певного розміру, або перевірити, чи містить файл певне повідомлення, або перевірити стан системи за допомогою команди, наприклад: vmstat. Єдине, що вас обмежує - це ваші потреби і уяву.

Сигнали і переривання

Якщо ви запустите сценарій getclock.sh, наведений в лістингу 7, самостійно, і закриєте вікно годин під час роботи сценарію, він буде продовжувати роботу, виводячи повідомлення про помилку кожен раз, коли буде намагатися зняти моментальну копію вікна годин. Точно так же, якщо ви запустите сценарій runclock3.sh з лістингу 4, і натиснете Ctrl-c у вікні терміналу, де працює цей сценарій, він негайно завершить свою роботу, не зупиняючи годинник. Щоб вирішити ці проблеми, ваш сценарій повинен контролювати або перехоплювати деякі з сигналів, що обговорювалися в главі Завершення дочірнього процесу .

Якщо ви запустите сценарій runclock3.sh в фоновому режимі і під час його роботи виконайте команду ps -f, ви побачите результат, схожий на наведений в лістингу 8.

Listing 8. Process information for runclock3.sh

[Ian @ attic4 ~] $ ./runclock3.sh 20s & [1] 10101 [ian @ attic4 ~] $ My PID = 10101. Clock's PID = 10102 UID PID PPID C STIME TTY STAT TIME CMD ian 10102 10101 0 06:37 pts / 1 S 0:00 xclock ps -f UID PID PPID C STIME TTY TIME CMD ian 4598 12455 0 Jul29 pts / 1 00:00 : 00 bash ian 10101 4598 0 6:37 pts / 1 00:00:00 / bin / bash ./runclock3.sh 20s ian 10102 10101 0 6:37 pts / 1 00:00:00 xclock ian 10104 10101 0 06: 37 pts / 1 00:00:00 sleep 20s ian 10105 4598 0 6:37 pts / 1 00:00:00 ps -f [ian @ attic4 ~] $ All done [1] + Done ./runclock3.sh 20s

Зверніть увагу, що у висновку ps -f містяться три записи, які стосуються процесу runclock3.sh (PID 10101). Зокрема, команда sleep працює як окремий процес. Одним із способів обробки передчасного завершення роботи процесу xclock або використання Ctrl-c для завершення роботи сценарію є перехоплення цих сигналів і подальше завершення команди sleep за допомогою команди kill.

Існує багато способів визначити процес команди sleep. У лістингу 9 показана остання версія нашого сценарію, runclock4.sh. Зверніть увагу на наступні моменти:

  • Команда sleep явно запускається у фоновому режимі.
  • Для очікування завершення команди sleep використовується команда wait.
  • Перша команда trap викликає запуск функції stopsleep при отриманні сигналу SIGCHLD, SIGINT або SIGTERM. Ідентифікатор PID процесу sleeper передається як параметр.
  • Після отримання сигналу викликається функція stopsleep. Вона виводить повідомлення про статус і відправляє сигнал SIGINT команді sleep.
  • Коли команда sleep з якої-небудь причини завершується, виконується умова команди wait. Після цього очищаються всі переривання і завершується команда xclock.
Listing 9. Trapping signals with runclock4.sh

[Ian @ attic4 ~] $ cat runclock4.sh #! / Bin / bash stopsleep () {sleeppid = $ 1 echo "$ (date + '% T') Awaken $ sleeppid!" kill -s SIGINT $ sleeppid> / dev / null 2> & 1} runtime = $ {1: -10m} mypid = $$ # Enable immediate notification of SIGCHLD set -bm # Run xclock in background xclock & clockpid = $! #Sleep for the specified time. sleep $ runtime & sleeppid = $! echo "$ (date + '% T') My PID = $ mypid. Clock's PID = $ clockpid sleep PID = $ sleeppid" # Set a trap trap 'stopsleep $ sleeppid' CHLD INT TERM # Wait for sleeper to awaken wait $ sleeppid # Disable traps trap SIGCHLD trap SIGINT trap SIGTERM # Clean up child (if still running) echo "$ (date + '% T') terminating" kill -s SIGTERM $ clockpid> / dev / null 2> & 1 && echo "$ ( date + '% T') Stopping $ clockpid "echo" $ (date + '% T') All done "

У лістингу 10 показаний результат триразового запуску runclock4.sh. У перший раз виконання завершується природним чином. Вдруге передчасно завершується xclock. Втретє сценарій переривається натисканням Ctrl-c.

Listing 10. Stopping runclock4.sh in different ways

[Ian @ attic4 ~] $ ./runclock4.sh 20s 9:09:39 My PID = 11637. Clock's PID = 11638 sleep PID = 11639 9:09:59 Awaken 11639! 9:09:59 terminating 9:09:59 Stopping 11638 9:09:59 All done [ian @ attic4 ~] $ ./runclock4.sh 20s 9:10:08 My PID = 11648. Clock's PID = 11649 sleep PID = 11650 9:10:12 Awaken 11650! 9:10:12 Awaken 11650! [2] + Interrupt sleep $ runtime 9:10:12 terminating 9:10:12 All done [ian @ attic4 ~] $ ./runclock4.sh 20s 9:10:19 My PID = 11659. Clock's PID = 11660 sleep PID = 11661 9:10:22 Awaken 11661! 9:10:22 Awaken 11661! 9:10:22 Awaken 11661! [2] + Interrupt sleep $ runtime 9:10:22 terminating 9:10:22 Stopping 11660 ./runclock4.sh: line 31: 11660 Terminated xclock 9:10:22 All done

Зверніть увагу, скільки разів викликалася функція stopsleep з повідомленнями "Awaken". Якщо ви не впевнені в тому, чому так відбувається, спробуйте зробити окремі копії цієї функції для кожного типу перехоплюваних переривань і подивіться, що призводить до додаткових викликам.

Ви також відзначите, що деякі повідомлення, що управляють завданнями, кажуть про завершення команди xclock і перериванні команди sleep. Коли ви запускаєте завдання у фоновому режимі з настройками терміналу bash за замовчуванням, bash зазвичай перехоплює сигнали SIGCHLD і виводить повідомлення після наступної виведеної рядки. Команда set -bm в сценарії вказує bash, що потрібно негайно повідомляти про сигнали SIGCHLD і дозволити моніторинг виконання завдань. У прикладі з будильником, наведеному в наступному розділі, буде показано, як придушити ці повідомлення.

будильник

Наше остання вправа повертає нас до вихідної проблеми, яка підштовхнула до написання цієї статті: як записувати телевізійні та радіопрограми. Фактично ми створимо будильник. Якщо законодавство вашої країни дозволяє записувати такі матеріали для подальшого використання, ви можете разом будильника створити магнітофон, додавши програму типу vsound.

Щоб додатково проілюструвати деякі аспекти цієї вправи, ми будемо використовувати додаток GNOME rhythmbox. Навіть якщо ви плануєте використовувати інший програвач, це обговорення все одно буде корисним.

Будильник може видавати будь-який звук, який ви побажаєте - наприклад, програвати ваші компакт-диски або файли MP3. У центральній частині Північної Кароліни є радіостанція WCPE , Цілодобово передає класичну музику. Крім радіомовлення, WCPE також передає потоковий звук через Інтернет в декількох форматах, в тому числі в Ogg Vorbis. Якщо ви віддаєте перевагу щось інше, вкажіть власне джерело звукового потоку.

Щоб запустити rhythmbox з вікна терміналу X Windows для програвання потоку Ogg Vorbis станції WCPE, потрібно виконати команду, показану в Лістингу 11.

Listing 11. Starting rhythmbox with the WCPE Ogg Vorbis stream

rhythmbox --play http://audio-ogg.ibiblio.org:8000/wcpe.ogg

Перший цікавий момент, що стосується rhythmbox - працююча програма може реагувати на команди, в тому числі на команду зупинки. Тому вам не потрібно використовувати команду kill для її завершення, хоча, якщо хочете, ви можете це зробити.

Другий момент Полягає в тому, что більшості медіа-програвачів, як и годинах, які ми вікорістовувалі в попередня прікладі, необхідній графічний Висновок. Зазвічай, коли ви не можете знаходітіся поряд з комп'ютером, ви запускаєте командіровку засоби cron або at, что зазвічай предполагает, что у запланованіх завдання немає доступу до дисплея. Команда rhythmbox дозволяє вам вказаті дисплей, Який необходимо використовуват. Ймовірно, вам потрібно буде увійти в систему, навіть якщо екран заблокований, але ви можете розглянути різні варіанти самостійно. У лістингу 12 показаний сценарій alarmclock.sh, який ви можете використовувати в якості основи для будильника. На вхід цього сценарію подається один параметр, що визначає тривалість роботи, яка за замовчуванням становить одну годину.

Listing 12. The alarm clock - alarmclock.sh

[Ian @ attic4 ~] $ cat alarmclock.sh #! / Bin / bash cleanup () {mypid = $ 1 echo "$ (date + '% T') Finding child pids" ps -eo ppid =, pid =, cmd = --no-heading | grep "^ * $ mypid" ps $ playerpid> / dev / null 2> & 1 && {echo "$ (date + '% T') Killing rhythmbox"; rhythmbox --display: 0.0 -quit; echo "$ (date + '% T') Killing rhythmbox done"; }} Stopsleep () {sleeppid = $ 1 echo "$ (date + '% T') stopping $ sleeppid" set + bm kill $ sleeppid> / dev / null 2> & 1} runtime = $ {1: -1h} mypid = $$ set -bm rhythmbox --display: 0.0 --play http://audio-ogg.ibiblio.org:8000/wcpe.ogg& playerpid = $! sleep $ runtime &> / dev / null 2> & 1 sleeppid = $! echo "$ (date + '% T') mypid = $ mypid player pid = $ playerpid sleeppid = $ sleeppid" trap 'stopsleep $ sleeppid' CHLD INT TERM wait $ sleeppid echo "$ (date + '% T') terminating" trap SIGCHLD trap SIGINT trap SIGTERM cleanup $ mypid final wait

Зверніть увагу на використання set + bm в функції stopsleep для зміни параметрів управління завданнями і придушення повідомлень, які ви бачили раніше в runclock4.sh

У лістингу 13 показаний приклад crontab, який буде запускати будильник з 6 до 7 ранку кожен робочий день, з 7 ранку на дві години щосуботи і з 8:30 ранку на півтори години щонеділі.

Listing 13. Sample crontab to run your alarm clock

0 6 * * 1-6 /home/ian/alarmclock.sh 1h 0 7 * * 7 /home/ian/alarmclock.sh 2h 30 8 * * 0 /home/ian/alarmclock.sh 90m

Дізнатися, як створити запис crontab для власного будильника, можна з попередньої ради: Планування завдань за допомогою cron та at .

У більш складних завданнях у вас може бути кілька дочірніх процесів. У процедурі очищення показується, як використовувати команду ps для пошуку дочірніх процесів вашого сценарію. Ви можете розвинути цю ідею і організувати цикл за довільним безлічі дочірніх процесів і завершити їх все.

додаткова інформація

Якщо ви хочете дізнатися більше про адміністрування Linux, прочитайте керівництво " Підготовка до іспиту LPI 102: Адміністративні завдання (EN) "Або ознайомтеся з іншими ресурсами , Що вказані нижче. Не забудьте проголосувати за цю сторінку і повідомити нам, які ще поради ви бажаєте побачити.

Ресурси для скачування

Схожі теми

  • оригінал статті Controlling the duration of scheduled jobs (EN) .
  • Ця рада доповнює попередню пораду " Планування завдань за допомогою cron та at (EN) "(DeveloperWorks, липень 2007 р), в якому описуються основи планування завдань в Linux.
  • подівіться всі поради по Linux (EN) на сайті developerWorks.
  • Щоб отримати більш детальну інформацію по іншим адміністративним завданням в Linux, в тому числі з управління користувачами, створення резервної копії, роботі з системним журналом і протоколу мережевого часу, познайомтеся з керівництвом " Підготовка до іспиту LPI 102: Адміністративні завдання (EN) "(DeveloperWorks, липень 2007 р). Воно є частиною великої серії для підготовки до іспитів LPI (EN) , Що охоплює основи Linux і готують вас до сертифікації в якості системного адміністратора.
  • Дізнайтеся про графічному інструменті ImageMagick (EN) з наших статей " Графіка з командного рядка (EN) "(DeveloperWorks, червень 2003 г.) і" Ще про графік з командного рядка (EN) "(DeveloperWorks, березень 2004 р.)
  • Дізнайтеся более про Netatalk (EN) на сайті Sourceforge.
  • на сайті Linux Documentation Project (EN) можна знайти безліч корисних документів, особливо практичні інструкції.
  • в розділі Linux сайту developerWorks можна знайти додаткові ресурси для розробників Linux, включаючи керівництва по Linux , А такоже найпопулярніші серед наших читачів статті та керівництва Linux за останній час (EN) .
  • Використовуйте в своєму наступному проекті розробки для Linux ознайомчі версії програмного забезпечення IBM (EN) , Які можна скачати безпосередньо з developerWorks.

Підпішіть мене на ПОВІДОМЛЕННЯ до коментарів

Jsp?
Вам потрібні інші поради по Linux?
Gif & sleep 1s # usleep 998000 done convert -resize 50% -loop 0 -delay 100 clock?