it-swarm.com.de

Sudo und Nohup zusammenarbeiten lassen

Linux Neuling hier.

Ich habe ein Perl-Skript, das zwei Eingaben über die Befehlszeile benötigt. Ich habe versucht, es im Hintergrund auszuführen, aber das ist, was ich bekam:

[~user]$ Nohup Sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
[2] 19603
[~user]$ Nohup: appending output to `Nohup.out'

nachdem das System "Nohup: Anhängen der Ausgabe an Nohup.out" zurückgegeben hat, wird keine neue Eingabeaufforderung angezeigt. Solange ich einen anderen Befehl eingebe, wird mir die Shell mitteilen, dass der Prozess gestoppt ist:

[~user]$ Nohup Sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
[2] 19603
[~user]$ Nohup: appending output to `Nohup.out'
ls
ascii_loader_script.pl  format_wrds_trd.txt  Nohup.out  norm_wrds_trd.cfg
[2]+  Stopped                 Nohup Sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv

Ich habe mir diesen Beitrag angesehen und versucht, "Sudo date" zu machen, bevor ich den Befehl ausführte. Ich habe immer noch das Gleiche . http://www.Sudo.ws/pipermail/Sudo-users/2003-July/001648.html

35
Alex Chen

Das Problem hier, imho, ist nicht Nohup, sondern Sudo im Hintergrund.

Sie setzen den Prozess in den Hintergrund (& am Ende des Befehls), aber Sudo benötigt wahrscheinlich eine Kennwortauthentifizierung. Deshalb stoppt der Prozess.

Versuchen Sie eine davon:

1) Entfernen Sie das kaufmännische Und-Zeichen vom Ende des Befehls, antworten Sie auf passord. Prompt und afterwords setzen Sie es in den Hintergrund (indem Sie STRG-Z eingeben.

2) Ändern Sie die Option/etc/sudoers so, dass kein Benutzerpasswort abgefragt wird, indem Sie die folgende Zeile einfügen: Myusername ALL = (ALL) NOPASSWD: ALL

Wenn Ihre Anwendung neben der Kennwortantwort auf eine andere Eingabe wartet, können Sie die Eingabe wie folgt an den Befehl weiterleiten: $ Cat responses.txt | Sudo mycommand.php

hth

17
Bandiera

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 das Programm auch nach dem Schließen Ihrer aktuellen Terminalsitzung fortgesetzt werden soll

45
dusktreader

Sie müssen zuerst Sudo verwenden, dann Nohup.

Sudo Nohup ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
4
QkiZ

Ich öffne einen Editor und tippte diese Zeilen:

#!/bin/bash
Sudo echo Starting ...
Sudo -b MyProcess

(Wo MyProcess ist alles, was ich als Superuser ausführen möchte.)

Dann speichere ich die Datei dort, wo ich sie als MyShellScript.sh möchte.

Ändern Sie dann die Dateiberechtigungen, um die Ausführung zuzulassen. __ Führen Sie sie dann in einem Terminal aus. Die Option "-b" weist Sudo an, den Prozess separat im Hintergrund auszuführen, sodass der Prozess nach dem Tod der Terminalsitzung weiter ausgeführt wird.

Arbeitete für mich in Linux-Minze.

1
DVOPS

Zuerst sollten Sie Sudo und Nohup..__ umschalten und dann:

if Sudo echo Starting ...
then
    Sudo Nohup <yourProcess> &
fi

Der echo Starting ... kann durch einen beliebigen Befehl ersetzt werden, der nicht viel ausübt .. __ Ich verwende ihn nur als Dummy-Befehl für die Sudo.

Dadurch löst Sudo in der if-Bedingung die Kennwortprüfung aus Wenn dies in Ordnung ist, wird die Sudo-Sitzung angemeldet und der zweite Aufruf ist erfolgreich, andernfalls schlägt if fehl und führt den eigentlichen Befehl nicht aus.

Das sollte funktionieren 

Sudo -b -u userName ./myScript > logFile

Ich bin nur neugierig zu verstehen, dass ich diese logFile als E-Mail senden kann, nachdem ./myScript erfolgreich im Hintergrund ausgeführt wurde.

1
Utsav

Sie können es als Ihren Alias ​​setzen:

Sudo sh -c 'Nohup openvpn /etc/openvpn/client.ovpn 2>&1 > /dev/null &'
0
xiaoping378

Du kannst es versuchen

Sudo su
am#nd then
Nohup ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
instead of
Nohup Sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
0
ThomasDr

Versuchen:

xterm -e "Sudo -b Nohup php -S localhost:80 -t /media/malcolm/Workspace/sites &>/dev/null"

Wenn Sie xterm schließen, ist der Webserver PHP noch aktiv.
Setzen Sie nicht Nohup vor Sudo. Andernfalls wird der PHP-Webserver nach dem Schließen von xterm beendet.

0
diyism