Команда s ///
ожидает, что параметр «search» будет регулярным выражением . Большинство версий sed
должны поддерживать соответствие \ b
, которое является совпадением нулевой ширины на границе слова без слова или края слова. «Слово» в этом случае определяется как символ, который представляет собой букву, цифру или знак подчеркивания ( _
). Например, если мы предположим, что строка c ++
находится в отдельной строке в вашем файле, \ b
будет соответствовать в следующих позициях:
c
. c
и первым +
. +
. Следующая команда должна дать вам желаемый результат:
sed -i 's/\bhi\b/hotel/g' hi.txt
Слово this
не будет соответствовать, потому что перед h
стоит символ слова ( t
), а за i
следует символ слова ( s
). Однако строка This is hi.txt
будет соответствовать второму экземпляру hi
, потому что окружающее пространство и .
- символы, не являющиеся словами.
Если вы используете полный systemd, то стандартные скрипты sysvinit игнорируются. Если вы хотите использовать скрипты sysvinit, вам необходимо установить systemd-shim
rc.local
. Как я сказал о CentOS 7 :
Вы используете Debian 8. У вас есть systemd. /etc/rc.local
- это механизм двойной обратной совместимости в systemd, потому что это механизм обратной совместимости для механизма, который сам был механизмом совместимости в системе Ван Смуренбурга 5 rc
клон.
Как показывает беспорядок в вопросе AskUbuntu, ссылка на который приведена ниже, использование /etc/rc.local
может привести к ужасным ошибкам. В другом месте люди были удивлены тем фактом, что systemd не запускает rc.local
совершенно таким же образом, в том же месте в начальной загрузке, как они привыкли.Другие были удивлены тем фактом, что то, что они создали в rc.local
, ожидая старых способов работы, затем полностью отменяется такими, как новые udev
правила, NetworkManager, systemd-logind
, systemd-resolved
или различные "Наборы".
Забудьте о rc.local
. Это не выход. У вас есть Debian 8. Так что создайте надлежащую служебную единицу systemd и не начинайте с точки, которая находится на расстоянии двух уровней обратной совместимости. (В Ubuntu он удаляется трижды, последовавший за ним клон System 5 rc
был затем сам дважды заменен, более десяти лет назад выскочкой, а затем systemd.)
Не запускайте этот процесс с помощью systemd, создав сценарий startup.sh
и затем вызвав его из служебного модуля systemd. Эта идея очень быстро приводит к системной территории Дома Ужаса . Создайте служебную единицу, которая максимально подробно описывает настройку и выполнение процесса непосредственно. Используйте сценарий оболочки оболочки только тогда, когда вы попадаете в ограничения этого. И убедитесь, что ваш сценарий оболочки оболочки как минимум использует exec
для наложения окончательной программы демона.
Вы не говорите, что это за услуга. Вы упомянули об использовании screen
, но это слишком часто используется в качестве супервизора Dmon для бедняков, и вполне может быть не способом запустить вашу службу в фактическом сервисе менеджер.Я действительно вижу там слово «ark», которое в сочетании с потенциальным злоупотреблением screen
напоминает о двух вещах: