Je veux exécuter une commande Sudo apt-get update &
. Cependant, après avoir appuyé sur entrée, lorsque je frappe pour jobs
, il affiche l'état de ces commandes comme étant arrêté. Je suppose qu'en plaçant le processus en arrière-plan, je ne lui ai pas donné l'occasion de demander un mot de passe. Existe-t-il un moyen d'exécuter en arrière-plan un processus nécessitant un mot de passe?
Essayez de taper Sudo -i
première fin puis apt-get update &
ou tout simplement en exécutant la commande:
Sudo -i && apt-get update &
Vous pouvez également essayer la commande suivante:
gksudo && Sudo apt-get update &
Mais je ne suis pas sûr que ça va marcher.
Vous pouvez également essayer d'ajouter votre utilisateur à la liste des utilisateurs qui ne sont pas obligés de saisir un mot de passe pour utiliser Sudo.
Pour ce faire, tapez Sudo visudo
dans le terminal. Puis ajoutez la ligne
%super_sudoers ALL=(ALL) NOPASSWD: ALL
Ou ce que vous voulez appeler le groupe (vous pouvez changer de "super_sudoers") puis ajoutez votre utilisateur à ce groupe en tapant
usermod -a -G super_sudoers yourusername
(remplacer évidemment votre nom d'utilisateur par votre nom d'utilisateur)
et redémarrez (ou peut-être déconnectez/connectez-vous fonctionne, pas sûr) pour trouver vous pouvez taper des commandes suo sans avoir besoin d'entrer un mot de passe. Bien entendu, cela signifie que d’autres personnes peuvent s’assurer que vous laissez toujours votre ordinateur verrouillé et que la connexion automatique n’est pas activée.
Tout d'abord, "Ce n'est pas la meilleure pratique".
Mais vous pouvez utiliser la commande Sudo -S
Sudo -S:
L'option -S (stdin) amène Sudo à lire le mot de passe depuis l'entrée standard au lieu du terminal.
Alors, allez au terminal et tapez:
echo 'yourpassword' | Sudo -S apt-get update 1>> /home/user/myaptupd.log 2>&1 &
il lancera la commande apt-get update sans demander un mot de passe et un arrière-plan,
et redirige (ajoute) le stdout et le stderr vers un fichier journal de votre maison nommé myaptupd.log , juste au cas où vous peut vérifier si tout va bien avec la commande apt-get update.
Faites ceci est une grosse commande, vous pouvez la mettre comme un alias dans votre fichier .bashrc. Par exemple: dans le type de terminal:
gedit /home/user/.bashrc
Ajouter cette ligne à la fin du fichier
alias myaptupd='echo 'yourpassword' | Sudo -S apt-get update 1>> /home/user/myaptupd.log 2>&1 &'
Rechargez votre .bashrc
Dans le terminal, allez dans votre répertoire personnel et tapez:
cd
Puis tapez:
source .bashrc
ou
. .bashrc
Maintenant, dans le terminal, tapez simplement l'alias en tant que commande:
myaptupd
Vous pouvez vérifier avec la commande jobs
le statut.
D'autre part, vous pouvez créer un script bash nommé myaptupd.sh
Par exemple:
#! /bin/bash
echo 'yourpassword' | Sudo -S apt-get update 1>> /home/user/myaptupd.log 2>&1 &
Pour des raisons de sécurité, vous pouvez définir les permanentes sur:
chmod 700 /path/to/the/myaptupd.sh
Ensuite, vous pouvez appeler le script avec:
bash /path/to/the/myaptupd.sh
Ou créez un alias dans votre .bashrc
alias myaptupd='bash /path/to/the/myaptupd.sh'
Rechargez votre fichier .bashrc (comme expliqué précédemment) et vous pourrez taper le nom de l'alias pour exécuter le script:
myaptupd
J'espère que cela vous aidera!
Cordialement.
Le meilleur moyen sécurisé est:
su -c "Sudo apt-get update &"
Vous pouvez également diriger la sortie vers un fichier journal:
su -c "Sudo apt-get update > update.log &"
J'ai ajouté ce qui suit à mon fichier .bash_profile.
sudobg() {
Sudo echo "Password entered"
Sudo $@ &
}
Ensuite, je peux simplement appeler:
Prompt$ sudobg echo "Hello from the background."
Et je reçois:
Password:
Password entered
[1] 6773
Prompt$ Hello from the background.
Disclaimer: J'utilise bash mais pas Ubuntu. Il peut y avoir de meilleurs emplacements pour cette définition de fonction.
Essayer:
xterm -e "Sudo -b Nohup php -S localhost:80 -t /media/malcolm/Workspace/sites &>/dev/null"
quand vous fermez xterm, le serveur web php toujours en vie,
Ne mettez pas "Nohup" avant "Sudo" sinon le serveur web php sera tué après la fermeture de xterm.