Питання про о


2

Я намагався використовувати, щоб запланувати роботу, яка працює на певний час. У мене комп'ютер Mac. Наприклад, я спробував це перевірити на наявність у Terminal наступного:

at now + 1 minute
echo 'Test at'
<EOD>

через більше 1 хвилини я не побачив відлуння. Після введення наступної команди:

at -l

Я не бачив жодної роботи, але мені надійшло повідомлення про те, що я маю пошту. Я пішов на пошту поштовою командою. Я бачив одне повідомлення, і я набрав 1. Я побачив, що моя робота є поштою.

Перше моє запитання: я не впевнений, чи це поведінка за замовчуванням для команди, чи ні. Чи є спосіб змінити цю поведінку і як її змінити, направити результат туди, де це можливо.

Я розумію, що якщо у моєї запланованої роботи є якесь повідомлення, і вихідне повідомлення буде відправлено назад на мою пошту. Наступне моє відповідне питання полягає в тому, що я не впевнений, де працює запланована робота? На задньому плані? Я не зміг його знайти за допомогою команди fg або bg.

Відповіді:


3

Це дійсно поведінка за замовчуванням у, як заявлено людиною у :

Користувачеві буде надіслано стандартну помилку та стандартний висновок з його команд, якщо такі є. Пошта буде надіслана за допомогою команди sendmail (8). Якщо команда at виконується з оболонки su (1), власник оболонки для входу отримає пошту.

Для іншої поведінки , ви можете викликати на так:

$ at now + 1 minute 
$ echo "test at" > /dev/ttys000
$ <EOD>

Який перенаправить STDOUT на термінал ttys000. Вам потрібно замінити / dev / ttys000 на відповідний файл пристрою вашого терміналу, який ви можете визначити, виконавши таку команду:

$ tty

Заплановані завдання виконуються у власній оболонці (див. Man at для більш детальної інформації), так що bg не перелічить їх. Щоб побачити список запланованих завдань, ви можете спробувати atq або at -l


Раніше я коментував, що замість того, щоб використовувати команду tty для пошуку поточного tty, ви можете використовувати generic / dev / tty, який завжди представляє поточний робочий термінал. Це правда, але тепер я думаю, що це не буде працювати в командах, оскільки вони запускаються в середовищі без керуючого терміналу . Вам слід повернутися до оригінальної поради, щоб знайти поточний термінал і перенаправити на нього. Вибачте за дезінформацію.
nagul

Поштова адреса - це типова адреса пошти UNIX. Чи є якийсь спосіб перенаправити на мій iMail, який може бути gmail або моїм обліковим записом електронної пошти провайдера Інтернет? Можливо, я також налаштував свою локальну пошту для переадресації електронної пошти до свого iMail box. Або я можу налаштувати iMail, щоб відкрити свою локальну поштову скриньку?
David.Chu.ca

4

Так, поведінка за замовчуванням посилає користувача, який викликав команду at.

На сторінці at man:

Оскільки команди виконуються в окремому виклику оболонки, запущені в окремій процесній групі без керуючого терміналу, дескриптори відкритих файлів, пастки та пріоритет, успадковані від середовища виклику, втрачаються.

Як результат вищезазначеного, не існує простого способу передачі результатів команд. Ви, звичайно, можете перенаправляти вихід на файл або використовувати альтернативний механізм для передачі результатів у складі команд.

Якщо ви не бачите заплановану роботу, це тому, що в системі працює демон-atd, який приймає та виконує завдання. На Mac, цим може управляти запускаючий демон, який є замінником демона Apple все-в-одному:

Демон запуску - це по суті заміна сценаріїв init, rc, сценаріїв init.d і rc.d, SystemStarter (Mac OS X), inetd і xinetd, atd, crond і watchdogd. Apple заявила, що має намір усунути всі вищезгадані послуги на користь запуску

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.