Die Lösung besteht darin, das Flag -b für sudo zu verwenden, um den Befehl im Hintergrund auszuführen:
$ sudo -b ./ascii_loader_script.pl 20070502 ctm_20070502.csv
Sie sollten nohup nur verwenden, wenn Sie möchten, dass das Programm auch nach dem Schließen Ihrer aktuellen Terminalsitzung fortgesetzt wird
Das Problem hier ist meiner Meinung nach nicht nohup, sondern die Hintergrundverarbeitung sudo.
Sie setzen den Prozess in den Hintergrund (&am Ende des Befehls), aber wahrscheinlich benötigt sudo eine Passwortauthentifizierung, und deshalb stoppt der Prozess.
Versuchen Sie es mit einem der folgenden:
1) Entfernen Sie das kaufmännische Und vom Ende des Befehls, antworten Sie auf die Eingabeaufforderung für das Passwort und setzen Sie es anschließend in den Hintergrund (indem Sie STRG-Z eingeben - was den Prozess stoppt und den bg-Befehl ausgibt, um ihn in den Hintergrund zu senden)
2) Ändern Sie die /etc/sudoers so, dass sie nicht nach dem Benutzerpasswort fragen, indem Sie die Zeile:myusername ALL=(ALL) NOPASSWD:ALL
einfügenWenn Ihre Anwendung neben der Passwortantwort auf andere Eingaben wartet, können Sie die Eingabe wie folgt an den Befehl weiterleiten:$ cat responses.txt|sudo mycommand.php
hth
Sie können es versuchen
sudo su
und dann
nohup ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
statt
nohup sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv &