Поскольку вы создаете свой собственный дистрибутив, ответственность за содержимое устанавливаемых вами файлов /etc/protocols
и /etc/services
лежит на вас.
Органом, контролирующим назначение протокольных и служебных номеров, является IANA, как указано в заголовках файлов, которые вы цитируете; соответствующие списки доступны на их веб-сайте для номеров протоколов и имен служб и номеров портов . Однако специалисты по сопровождению дистрибутива обычно добавляют записи, которые используются, но не были отправлены в IANA или не были одобрены, и удаляют записи, которые они считают устаревшими. Для Debian источник обоих файлов находится в репозитории netbase
.
POSIX определяет функции, которые можно использовать для получения информации о протоколах и службах, но не указывает, как эти данные хранятся или извлекаются, как указано в вашей цитате:
The implementation of this database is unspecified.
Информация, содержащаяся в базе данных, также не уточняется; POSIX эффективно накладывает требования только на схему.
at занимает два вида времени :фиксированный и интуитивный.
at -t 202111231735 это год 2021 месяц 11 день 23-й раз 17 :35
сейчас + 3 дня; в 07:00; в 12:00 следующего вторника делайте то, что вы ожидаете.
paul $ echo foo | at now + 3 days
warning: commands will be executed using /bin/sh
job 16 at Tue Jul 14 16:55:00 2020
paul $ date
Sat 11 Jul 16:56:02 BST 2020
paul $ echo foo | at 0700
warning: commands will be executed using /bin/sh
job 17 at Sun Jul 12 07:00:00 2020
paul $ echo foo | at 1200 next tuesday
warning: commands will be executed using /bin/sh
job 18 at Tue Jul 14 12:00:00 2020
paul $ atq
18 Tue Jul 14 12:00:00 2020 a paul
17 Sun Jul 12 07:00:00 2020 a paul
16 Tue Jul 14 16:55:00 2020 a paul
paul $
Ваши обратные -команды с галочкой совершенно неверны :они будут выполнять ваш сценарий прямо сейчас и вставлять свой фактический стандартный вывод в предстоящее задание. Поскольку вы перенаправляете весь вывод в момент создания задания, задание, которое оно устанавливает, на самом деле пусто --, в него не помещается стандартный вывод.
Чтение множества команд в at тоже некорректно. Они будут запускаться /bin/sh, а не оболочкой в любом шебанге, который у вас может быть. Если вам действительно необходимо иметь несколько строк команд, используйте HereDoc и очень внимательно относитесь к тому, происходит ли расширение оболочки при создании задания или при его окончательном запуске.
Просто повторите имя скрипта (и любые аргументы )в at. Затем оболочка увидит шебанг и запустит правильную оболочку. Кроме того, любые исправления, которые вы вносите в сценарий, будут эффективными, потому что at еще не прочитал настоящий сценарий. Вам даже не нужен путь, потому что по желанию можно восстановить ваш cwd и вашу среду, прежде чем он выполнит ваш скрипт.
Интуитивное определение времени для даты задокументировано (на моем Монетном дворе )по адресу /usr/share/doc/at/timespec
. Это в форме грамматики Баха -Наура, так что это не очень удобно. Использование at 07101805
приводит к неопределенному токену concatenated_date
, который, по-видимому, предполагает MMDDCCYY
для CC >= 1900, текущий век для CC == 00 и относительно 1900 для CC в {01..18}.
Просмотр сохраненных заданий, таких как:
paul $ at -c 18
#!/bin/sh
# atrun uid=1000 gid=1000
# mail paul 0
umask 22
XDG_VTNR=8; export XDG_VTNR
... 50 lies of setup.
COLORTERM=mate-terminal; export COLORTERM
XAUTHORITY=/home/paul/.Xauthority; export XAUTHORITY
cd /home/paul || {
echo 'Execution directory inaccessible' >&2
exit 1
}
foo