linux Obtenir sudo et nohup travailler ensemble




(7)

La solution consiste à utiliser l'indicateur -b pour que sudo exécute la commande en arrière-plan:

$ sudo -b ./ascii_loader_script.pl 20070502 ctm_20070502.csv

Vous ne devez utiliser nohup que si vous souhaitez que le programme continue même après la fermeture de votre session de terminal en cours.

Débutant Linux ici.

J'ai un script Perl qui prend deux entrées en ligne de commande. J'ai essayé de l'exécuter en arrière-plan, mais voici ce que j'ai obtenu:

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

après que le système ait renvoyé "nohup: ajout de la sortie à« nohup.out "", aucune nouvelle invite n'apparaîtra. Ensuite, tant que je tape une autre commande, le shell me dira que le processus est arrêté:

[~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

J'ai regardé ce post et essayé de faire "sudo date" avant d'exécuter la commande. J'ai toujours la même chose. http://www.sudo.ws/pipermail/sudo-users/2003-July/001648.html


Vous pouvez le définir comme votre alias:

sudo sh -c 'nohup openvpn /etc/openvpn/client.ovpn 2>&1 > /dev/null &'

Cela devrait marcher

sudo -b -u userName ./myScript > logFile

Je suis simplement curieux de comprendre que je peux envoyer ce fichier journal sous forme de courrier électronique une fois que le fichier ./myScript a été exécuté avec succès en arrière-plan.


Tout d’abord, vous devriez changer sudo et nohup . Et alors:

if sudo echo Starting ...
then
    sudo nohup <yourProcess> &
fi

L' echo Starting ... peut être remplacé par toute commande qui ne fait pas grand chose. Je ne l'utilise que comme commande fictive pour le sudo .

Ainsi, le sudo dans la condition if déclenche la vérification du mot de passe. Si c'est ok, la session sudo est connectée et le deuxième appel aboutira, sinon le if échouera et n'exécutera pas la commande réelle.


Essayer:

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

Lorsque vous fermez xterm, le serveur Web PHP est toujours actif.
Ne mettez pas nohup avant sudo sinon le serveur web PHP sera tué après la fermeture de xterm.


J'ouvre un éditeur et tape ces lignes:

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

(Où MyProcess est tout ce que je veux exécuter en tant que superutilisateur.)

Ensuite, je sauvegarde le fichier où je le veux sous MyShellScript.sh.

Ensuite, modifiez les autorisations de fichier pour autoriser l'exécution. Puis lancez-le dans un terminal. l'option "-b" indique à sudo d'exécuter le processus séparément en arrière-plan, de sorte que le processus continue de s'exécuter après la fin de la session de terminal.

Travaillé pour moi sous linux-mint.


Vous devez utiliser sudo en premier, nohup en second.

sudo nohup ./ascii_loader_script.pl 20070502 ctm_20070502.csv &




nohup