Czy każdy skrypt znajdujący się w /etc/network/if-up.d jest uruchamiany po uruchomieniu interfejsu?

12

Czy wszystkie skrypty w /etc/network/if-up.d są uruchamiane po uruchomieniu interfejsu sieciowego?

Jeśli tak, to po co komenda post-up w pliku interfejsów?

Spig
źródło
1
Cała zawartość folderów.d” jest zwykle wykonywana. Niektóre z nich faktycznie wymagają rozszerzenia nazwy pliku .sh”. Wszystkie pliki powinny być wykonywalne.
kolypto

Odpowiedzi:

14

Tak, generalnie uruchamiany jest każdy skrypt oznaczony jako wykonywalny i umieszczony w tym folderze. Pliki, które mają, są ograniczone do określonego zestawu nazw, ponieważ używane są części run.

post-upDziała tak samo jak używanie up. Umieszczenie skryptu w if-up.d jest tym samym, co zwykłe użycie polecenia, post-upktóre wskazuje skrypt lub polecenie w innym miejscu. Zwykle używasz up | post-up, gdy potrzebujesz tylko jednego polecenia dla jednego interfejsu. Gdy masz coś bardziej złożonego, możesz utworzyć skrypt.

interfejsy człowieka

...
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.

części biegowe człowieka

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
źródło
1
Jeśli więc chcesz, aby skrypt był uruchamiany tylko po uruchomieniu interfejsu i potrzebuje elementów w folderze if-up.d, aby był gotowy, albo musisz go nazwać, aby po uporządkowaniu polecenia zaczął działać w porządku leksykalnym lub umieść w innym katalogu i uruchom za pomocą polecenia post-up. Czy to brzmi dobrze?
Spig
1
Tak mi się wydaje.
Zoredache
1
Taka ładna szczegółowa odpowiedź. Nawet 10 lat później, wciąż zapewniając wgląd.
Xofo
Naprawdę musisz dokładnie przeczytać stronę manuala części uruchomieniowych, aby rozpoznać, że nawet skrypty z inną poprawną nazwą pliku z rozszerzeniem .sh nie będą działać. Cytat: „... bardzo by pomógł, gdyby istniały jakieś informacje na temat pomijania skryptu z powodu kropki. Straciłem dużo czasu na rozwiązywanie problemów ... stwierdzenie„ ... nazwy muszą składać się wyłącznie z wielkich i małych liter litery, cyfry, podkreślenia i łączniki ”. to za mało. Przeczytałem go dwa razy i nie pomogło mi zrozumieć, gdzie jest mój problem. Należy wyraźnie napisać, że skrypty z kropkami są pomijane ”.
ChrisW,
Ten „błąd” to „nie naprawi się” w Debianie: run-parts nie uruchamia skryptu z rozszerzeniem sh bugs.launchpad.net/ubuntu/+source/debianutils/+bug/38022
ChrisW