processus - telecharger les commandes de linux pdf




Obtenir sudo et nohup travailler ensemble (6)

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.

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


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.


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.


Le problème ici, à mon humble avis, n'est pas nohup, mais le traitement en arrière-plan sudo.

Vous mettez le processus en arrière-plan (& à la fin de la commande), mais sudo a probablement besoin d'une authentification par mot de passe. C'est pourquoi le processus est arrêté.

Essayez l'une de celles-ci:

1) supprime l'esperluette à partir de la fin de la commande, répondez à l'invite mot de passe et placez-la en arrière-plan (en tapant CTRL-Z - ce qui arrête le processus et en émettant la commande bg pour l'envoyer en arrière-plan)

2) Modifiez le fichier / etc / sudoers pour ne pas demander le mot de passe des utilisateurs en incluant la ligne suivante: myusername ALL = (ALL) NOPASSWD: ALL

Si, outre le mot de passe, votre application attend une autre entrée, vous pouvez la diriger vers la commande comme suit: $ cat answers.txt | sudo mycommand.php

hth


Vous devez utiliser sudo en premier, nohup en second.

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

Vous pouvez le définir comme votre alias:

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




nohup