Каждый сценарий, расположенный в /etc/network/if-up.d, запускается при запуске интерфейса?

12

Все ли скрипты в /etc/network/if-up.d запускаются при запуске сетевого интерфейса?

Если да, для чего нужна команда post-up в файле интерфейсов?

SPIG
источник
1
Все содержимое папок " .d", условно, выполняется. Некоторые из них действительно нуждаются в расширении имени файла " .sh". Все файлы должны быть исполняемыми.
Колыпто

Ответы:

14

Да, обычно запускается любой скрипт, помеченный как исполняемый и помещенный в эту папку. Файлы имеют ограниченный набор имен, потому что используются части выполнения.

The post-upделает то же самое, что и использование up. Поместить скрипт в if-up.d - это то же самое, что просто использовать символ post-up, указывающий на скрипт или команду где-то еще. Обычно вы используете up | post-up, когда вам просто нужно выполнить одну команду для одного интерфейса. Когда у вас есть что-то более сложное, вы создадите скрипт.

человек интерфейсы

...
up command

post-up command
      Run  command  after  bringing the interface up.  If this command
      fails then ifup aborts, refraining from marking the interface as
      configured  (even  though it has really been configured), prints
      an error message, and exits with status 0.   This  behavior  may
      change in the future.
...
There  exists  for  each  of  the  above  mentioned options a directory
/etc/network/if-<option>.d/ the scripts in which are run (with no argu-
ments) using run-parts(8) after the option itself has been processed.

беговые части человека

run-parts  runs  all  the  executable  files  named  within constraints
described below,

If  the  --lsbsysinit  option  is not given then the names must consist
entirely of upper and lower  case  letters,  digits,  underscores,  and
hyphens.
...
Files are run in the lexical sort  order  of  their  names  unless  the
--reverse  option  is given, in which case they are run in the opposite
order.
Zoredache
источник
1
Таким образом, если вы хотите, чтобы скрипт запускался только после запуска интерфейса, и для его работы требуется содержимое в папке if-up.d, вы должны либо назвать его так, чтобы он упал в лексическом порядке после команды, с которой вам нужно работать или поместите в другой каталог и запустите команду post-up. Это звучит правильно?
Spig
1
Да, я верю в это.
Зоредаче
1
Такой хороший подробный ответ. Даже 10 лет спустя, все еще обеспечивая понимание.
Xofo
Вам действительно нужно внимательно прочитать справочную страницу по частям выполнения, чтобы понять, что даже сценарии с правильным именем файла с расширением .sh не будут работать. Цитата: «... очень помогло бы, если бы была какая-либо информация о пропуске скрипта из-за точки. Я потерял много времени на устранение неполадок ... утверждение« ... имена должны состоять исключительно из прописных и строчных букв » буквы, цифры, подчеркивания и дефисы. не достаточно. Я прочитал это дважды, и это не помогло мне понять, где моя проблема. Должно быть ясно написано, что сценарии с точками пропущены. "
ChrisW
Эта «ошибка» в Debian «не исправит»: run-parts не запускает скрипт с расширением sh bugs.launchpad.net/ubuntu/+source/debianutils/+bug/38022
ChrisW