Подопнуть процесс и выйти (не ожидая возврата)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Подопнуть процесс и выйти

Сообщение Женя Подсыпальников »

Здравствуйте !

Мне бы хотелось стартануть dhcpcd wlp2s2
в одном из сервисов процесса загрузки systemd .

Всё путём,
только систем-анализ показывает порой 6 секунд на его время старта... :)

Это процесс ожидания адреса от маршрутизатора.
Только потом dhcpcd форкуется
и сообщает сервису о готовности.

Поскольку я знаю,
что мне адрес секунд 20 после включения машины точно не нужен,
хотелось бы найти способ уже и эту команду пустить в фоне.

Напрмер, под Вендой можно сказать CreateProcess(..) ,
и оно не ждёт конца его, а лишь факт удачного или неудачного пинка.

Скажите, пожалуйста, как такое заскриптовать в Линуксе ? :)

Достаточно ли лишь запустить некоторый скрипт такого содержания:
dhcpcd wlp2s2 & ?

bash , почему-то, не выводит дальнейшего приглашения
либо до выхода процесса, либо до кнопки ввода...
А как оно буде при загрузке, фоном или нет ?

Спасибо !
Пойдём на рыбалку !
Спасибо сказали:
Kopilov
Сообщения: 954
ОС: [K]Ubuntu, Debian

Re: Подопнуть процесс и выйти

Сообщение Kopilov »

Должно быть достаточно, если после запуска фонового процесса добавить команду disown -- это позволит ему не прерваться вместе с текущей оболочкой.
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Подопнуть процесс и выйти

Сообщение Женя Подсыпальников »

Форканулось ! :)

Пока оно там чухалось,
я успел терминал перезапустить,
и нате - google.com уже встречает... :)

Использовал:
bash -c "sudo dhcpcd eth0 & disown"

Дома время сервиса померю - допишу :)

Спасибо !
Пойдём на рыбалку !
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Подопнуть процесс и выйти

Сообщение Женя Подсыпальников »

Господин Копилов,
спасибо, у меня выигралось треть времени загрузки ! :)

Сервис:

Код: Выделить всё

[Unit]
Description=Network Connectivity
Wants=network.target
Before=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/ip link set dev wlp2s2 up
ExecStart=/usr/sbin/wpa_supplicant -B -i wlp2s2 -c /etc/wpa_supplicant.conf
ExecStart=/usr/bin/bash -c "/sbin/dhcpcd wlp2s2 & disown"

[Install]
WantedBy=multi-user.target


Первый сервис сверху (сейчас 2, раньше 8 секунд), вся погрузка (сейчас 10, раньше 16 секунд):

Код: Выделить всё

[eugenique@mars ~]$ systemd-analyze
Startup finished in 2503ms (kernel) + 8183ms (userspace) = 10686ms
[eugenique@mars ~]$ systemd-analyze blame
  1883ms network.service
  1666ms systemd-vconsole-setup.service
   995ms systemd-logind.service
   854ms tmp.mount
   706ms systemd-modules-load.service
   679ms systemd-sysctl.service
   653ms dev-hugepages.mount
   633ms sys-kernel-debug.mount
   587ms dev-mqueue.mount
   381ms polkit.service
   316ms systemd-user-sessions.service
   316ms systemd-tmpfiles-setup.service
   286ms systemd-remount-fs.service
   232ms sys-fs-fuse-connections.mount
   202ms systemd-udevd.service
   175ms upower.service
   143ms systemd-udev-trigger.service
   133ms boot.mount
   111ms udisks2.service
    82ms home.mount
    50ms sys-kernel-config.mount


Готовность сервиса на 11 секунд раньше выхода dhcpcd в собственный (вторичный) форк:

Код: Выделить всё

[eugenique@mars ~]$ systemctl status network
network.service - Network Connectivity
      Loaded: loaded (/etc/systemd/system/network.service; enabled)
      Active: active (exited) since Ср 2013-02-06 19:49:21 CET; 44min ago
     Process: 238 ExecStart=/usr/bin/bash -c /sbin/dhcpcd wlp2s2 & disown (code=exited, status=0/SUCCESS)
     Process: 233 ExecStart=/usr/sbin/wpa_supplicant -B -i wlp2s2 -c /etc/wpa_supplicant.conf (code=exited, status=0/SUCCESS)
     Process: 227 ExecStart=/sbin/ip link set dev wlp2s2 up (code=exited, status=0/SUCCESS)
      CGroup: name=systemd:/system/network.service
          ├─237 /usr/sbin/wpa_supplicant -B -i wlp2s2 -c /etc/wpa_supplicant.conf
          └─298 /sbin/dhcpcd wlp2s2

фев 06 19:49:23 mars bash[238]: dhcpcd[239]: wlp2s2: carrier acquired
фев 06 19:49:23 mars bash[238]: dhcpcd[239]: wlp2s2: rebinding lease of 10.0.0.149
фев 06 19:49:27 mars bash[238]: dhcpcd[239]: wlp2s2: acknowledged 10.0.0.149 from 10.0.0.138
фев 06 19:49:27 mars dhcpcd[239]: wlp2s2: acknowledged 10.0.0.149 from 10.0.0.138
фев 06 19:49:27 mars bash[238]: dhcpcd[239]: wlp2s2: checking for 10.0.0.149
фев 06 19:49:27 mars dhcpcd[239]: wlp2s2: checking for 10.0.0.149
фев 06 19:49:32 mars bash[238]: dhcpcd[239]: wlp2s2: leased 10.0.0.149 for 86400 seconds
фев 06 19:49:32 mars dhcpcd[239]: wlp2s2: leased 10.0.0.149 for 86400 seconds
фев 06 19:49:32 mars bash[238]: dhcpcd[239]: forked to background, child pid 298
фев 06 19:49:32 mars dhcpcd[239]: forked to background, child pid 298
Пойдём на рыбалку !
Спасибо сказали:
Kopilov
Сообщения: 954
ОС: [K]Ubuntu, Debian

Re: Подопнуть процесс и выйти

Сообщение Kopilov »

Пожалуйста!
Я очень рад!
Спасибо сказали: