Puncte:1

Detașați procesul de firul de execuție

drapel cn

Lansez un script cu reguli udev pe fiecare conexiune de dispozitiv USB. Problema este decât am nevoie de acest script pentru a lansa altul după 20 de secunde.

Acesta este codul.

#!/bin/bash
#
dormi 20
/'Un alt script'

Problema este că a face așa cu întârzierea operației de montare udev, ceea ce nu vreau să se întâmple.

Am încercat asta:

#!/bin/bash
#
nohup bash /'Alt Script' & 
fg

Puneți așteptarea în „Alt Script”.

REZOLVAT

Regula udev a fost lansată cu RUN{type}, asta a fost problema, nu poate gestiona procesele lungi, am creat un serviciu systemd și îl lansez folosind ENV{SYSTEMD_WANTS} pe regulile udev și ca silk.

Fa asta:

/etc/udev/rules.d/99-usb.rules

    ACTION=="adăugare", ENV{SYSTEMD_WANTS}="usb.service"

/etc/systemd/system/usb.service

    [Unitate]
    Descriere=Autorun USB.
    
    [Serviciu]
    Type=onehot
    ExecStart=/Script.sh

/Script.sh

    #!/bin/bash
    #
    dormi 20
    /'Un alt script'
drapel in
O opțiune poate fi `bash other.sh & disown`
Jobesmor avatar
drapel cn
Am încercat, dar am primit un comportament ciudat, am citit puțin că dacă un proces terminal care „lansează” se termină înainte de „lansat”, atunci ultimul este și el închis, fapt amuzant pe 18.04 târziu, funcționează ca mătasea, dar trebuie să funcționeze cel puțin pe 16.04
bac0n avatar
drapel cn
consultați manualul `udev` `RUN{type}`
bac0n avatar
drapel cn
Înrudit: [De ce nu funcționează regula mea udev?](https://askubuntu.com/a/1222166/986805)
Zanna avatar
drapel kr
Postarea legată vă rezolvă problema?
muru avatar
drapel us
Pornirea unei unități systemd nu ar trebui să blocheze udev, așa că ar trebui să o faceți în loc să vă încurcați cu sleep și nohup.
fuzzy drawings avatar
drapel tj
El ar putea folosi `at now -f scrip2.sh` pentru a lansa celălalt script. Nici asta nu va bloca `udev`. OP spune că are nevoie de întârziere de 20 de secunde din orice motiv, așa că dacă `scrip2.sh` începe cu `sleep 20` ar funcționa fără a necesita o intrare systemd `.service`.
Jobesmor avatar
drapel cn
Îl încerc și cu „acum -f” și folosesc „sleep” la începutul scriptului, nu funcționează pentru mine, din nou nu sunt sigur că cauza vrăjitoarei pe 18+ funcționează bine.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.