Создание init.d сценарии недостаточно. Необходимо создать, запускают/останавливают ссылки в /etc/rc[0-9].d
для надлежащего уровня выполнения.
По умолчанию Debian использует уровень выполнения 2 (настраивающийся в /etc/inittab
).
Для создания соответствующих ссылок можно использовать обновление-rc.d. Выполненный
update-rc.d domotigaserver defaults
как пользователь root.
С другой стороны, можно использовать rcconf
(установите его, например, apt-get install rcconf
). Это предлагает хороший TUI.
Посмотрите, например, здесь для получения дополнительной информации.
Взгляды в источнике, он использует O_Append. Для Bash 4.3.30 в make_cmd.c.c
Линия 710-713 Читайте:
case r_appending_to: /* >>foo */
case r_append_err_and_out: /* &>> filename */
temp->flags = O_APPEND | O_WRONLY | O_CREAT;
break;
Я столкнулся с этим: stroace -o spork.out bash -c "Echo 1234 >> Некоторые файл"
, чтобы выяснить ваш вопрос. Это то, что я нашел:
open("some-file", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3
Нет файла с именем «Некоторые файл» существовал в каталоге, в котором я запустил команду Echo
.
Это не только сделано в Bash, это требуется стандартом.
Прилагаемое перенаправление вывода должно вызывать файл, имя которого приводит к расширению слов, которое будет открываться для вывода на обозначенный файл дескриптора. Файл открыт, как будто Open () Функция () функция () . Если файл не существует, он будет создан.
Любая постер-совместимая оболочка, поэтому должна сделать это. На некоторых системах Unix / bin / sh
может быть несоответствующей оболочкой Bourne (раковина Bourne была изначально написана до o_append
, была изобретена), а имеющаяся оболочка POSIX, как правило, будет ksh
, который будет доступен как SH
в другом месте пути, такое как Solaris / usr / xpg4 / bin
.
Исследуем, что использование strace
на локальной (не NFS) файловой системе:
$ strace -eopen -- bash -c "echo foo >> /tmp/testfile000" 2>&1 | grep /tmp/testfile000
open("/tmp/testfile000", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3
$ strace -eopen -- bash -c "echo foo > /tmp/testfile000" 2>&1 | grep /tmp/testfile000
open("/tmp/testfile000", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
Другие оболочки, а именно dash
, dash
, sh
busybox' и mksh
ведут себя аналогично.
Вариант -e open
означает -e trace=open
для отслеживания только системного вызова open()
.