Sur une instance Amazon S3 Linux, j'ai deux scripts appelés start_my_app
et stop_my_app
qui démarrent et s'arrêtent pour toujours (qui à son tour exécute mon application Node.js). J'utilise ces scripts pour démarrer et arrêter manuellement mon application Node.js. Jusqu'ici tout va bien.
Mon problème: je veux également le configurer de sorte qu'il start_my_app
soit exécuté à chaque démarrage du système. Je sais que je dois ajouter un fichier à l'intérieur init.d
et je sais comment le lier au répertoire approprié à l'intérieur rc.d
, mais je ne peux pas comprendre ce qui doit réellement aller à l'intérieur du fichier dans lequel je le place init.d
. Je pense que ça devrait être juste une ligne, genre start_my_app
, mais ça ne marche pas pour moi.
init.d
solution ( ici ) devrait être préférée à larc.local
solution car cette dernière est l'ancien outillage qui n'est encore utilisable que parce que le nouvel outillage est rétrocompatible.Réponses:
Dans le fichier que vous insérez,
/etc/init.d/
vous devez le définir comme exécutable avec:Merci à @meetamit, si cela ne fonctionne pas, vous devez créer un lien symbolique vers
/etc/rc.d/
Veuillez noter que sur la dernière Debian, cela ne fonctionnera pas car votre script doit être conforme au LSB (fournissez, au moins, les actions suivantes: démarrer, arrêter, redémarrer, forcer le rechargement et l'état): https: //wiki.debian .org / LSBInitScripts
Remarque: vous devez mettre le chemin absolu de votre script au lieu d'un chemin relatif, cela peut résoudre des problèmes inattendus:
Et n'oubliez pas d'ajouter au dessus de ce fichier:
la source
ln
commande) vers un répertoire dansrc.d
/etc/rc.d
dossier, mais j'ai des/etc/rcX.d
dossiers (Ie /etc/rc0.d , /etc/rc1.d , /etc/rcS.d ), il y a aussi un fichier /etc/rc.local . Je pense que vous devriez créer des liens symboliques dans un dossier personnalisé comme/etc/rc9.d
ou dans l'un des existants ... (Ubuntu Server 14.04)Définissez un crontab pour cela
après chaque démarrage, il exécutera le script de test.
la source
@reboot sh $HOME/test.sh
dans le crontab est encore plus proprecrontab -l
devrait apparaître@reboot sh $HOME/test.sh
pour confirmer qu'il a bien été défini.Une approche simple consiste à ajouter une ligne dans
/etc/rc.local
:ou si vous souhaitez exécuter la commande en tant qu'utilisateur spécial:
(l'esperluette arrière met en arrière plan le processus et permet au rc.local de continuer à s'exécuter)
Si vous voulez un script d'initialisation complet, la distribution debian a un fichier modèle, donc:
et l'adapter un peu.
la source
stop_my_app
je devrais arrêter manuellement l'application (en exécutant ), je devrais le faire avecsudo
, non? De plus, je me demande quelle est exactement la fonction de l'esperluette arrière (?).&
exécuter le processus en arrièreinit.d
façon de faire les choses (votre réponse était juste une solution de contournement plus simple pour moi à l'époque) . Ce message obtient beaucoup de vues et de votes, il est donc important de rester précis.C'est ainsi que je le fais sur les systèmes Red Hat Linux .
Mettez votre script
/etc/init.d
, détenu par root et exécutable. En haut du script, vous pouvez donner une directive pourchkconfig
. Par exemple, le script suivant est utilisé pour démarrer une application Java en tant qu'utilisateur oracle.Le nom du script est
/etc/init.d/apex
Cela signifie que le script doit s'exécuter aux niveaux 3, 4 et 5 et que la priorité de démarrage / arrêt est 99 et 10.
Ensuite, en tant qu'utilisateur,
root
vous pouvez utiliserchkconfig
pour activer ou désactiver le script au démarrage:Et vous pouvez utiliser
service start/stop apex
.la source
Entrez en
cron
utilisantsudo
:sudo crontab -e
Ajoutez une commande à exécuter au démarrage, dans ce cas un script:
@reboot sh /home/user/test.sh
Sauver:
Appuyez sur ESC puis: x pour enregistrer et quitter, ou appuyez sur ESC puis sur ZZ (c'est-à-dire shift + zz)
Test Test Test :
Exécutez votre script de test sans cron pour vous assurer qu'il fonctionne réellement.
Assurez-vous d'avoir enregistré votre commande dans cron, utilisez
sudo crontab -e
Redémarrez le serveur pour confirmer que tout fonctionne
sudo @reboot
la source
sudo
si vous souhaitez exécuter une certaine commande au démarrage en utilisant l'utilisateur actuel./tmp
??Ajoutez simplement une ligne à votre crontab ..
Assurez-vous que le fichier est exécutable:
Pour modifier le fichier crontab:
Ligne à ajouter:
C'est simple!
la source
# uname -a Linux accton-xp70a0-26-a1 3.11.10-301.fc20.x86_64 #1 SMP Thu Dec 5 14:01:17 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Une autre option consiste à avoir une commande @reboot dans votre crontab.
Toutes les versions de cron ne le prennent pas en charge, mais si votre instance est basée sur l'AMI Amazon Linux, cela fonctionnera.
la source
Tu peux le faire :
puis utilisez cette commande
Veuillez consulter cette page sur Cyberciti .
la source
Créez votre propre exécutable / init
Ce n'est pas ce que vous voulez, mais c'est amusant!
Choisissez simplement un fichier exécutable arbitraire, même un script shell , et démarrez le noyau avec le paramètre de ligne de commande:
Vers la fin du démarrage, le noyau Linux exécute le premier exécutable de l'espace utilisateur au chemin donné.
Plusieurs projets fournissent des
init
exécutables populaires utilisés par les principales distributions, par exemple systemd, et dans la plupart des distributions, init lancera un tas de processus utilisés dans le fonctionnement normal du système.Mais nous pouvons le détourner
/init
pour exécuter nos propres scripts minimaux afin de mieux comprendre notre système.Voici une configuration reproductible minimale: https://github.com/cirosantilli/linux-kernel-module-cheat/tree/f96d4d55c9caa7c0862991025e1291c48c33e3d9/README.md#custom-init
la source
Cette solution simple a fonctionné pour moi sur une instance Amazon Linux exécutant CentOS. Modifiez votre
/etc/rc.d/rc.local
fichier et placez-y la commande. Il est mentionné dans ce fichier qu'il sera exécuté après tous les autres scripts d'initialisation. Soyez donc prudent à cet égard. Voici à quoi ressemble le fichier pour moi actuellement. . La dernière ligne est le nom de mon script.la source
La méthode la plus simple absolue si tout ce que vous voulez exécuter est un simple script, (ou quoi que ce soit), si vous avez un GUI pour utiliser le système> les préférences puis les applications de démarrage.
recherchez simplement le script que vous voulez et c'est parti. (rendre le script exécutable)
la source
Pour Debian 9, voir /ubuntu/228304/how-do-i-run-a-script-at-start-up . Cela m'a aidé. Version courte pour Debian 9: ajoutez des commandes (en tant que root) à /etc/rc.local
Probablement, /path_to_file/filename.sh devrait être exécutable (je pense que oui).
la source
À Lubuntu, j'ai dû faire face à la situation inverse. Skype commence à fonctionner après le démarrage et je l'ai trouvé dans
~/.config/autostart/
le fichierskypeforlinux.desktop
. Le contenu du fichier est le suivant:La suppression de ce fichier m'a aidé.
la source
$ update-rc.d myScript.sh defaults NN
où NN est l'ordre dans lequel il doit être exécuté. 99, par exemple, signifie qu'il sera exécuté après 98 et avant 100.la source
Travailler avec des microservices ou shell Python 3; en utilisant Ubuntu Server 18.04 (Bionic Beaver) ou Ubuntu 19.10 (Eoan Ermine) ou Ubuntu 18.10 (Cosmic Cuttlefish), j'aime toujours ces étapes, et cela a toujours fonctionné aussi:
Création d'un microservice appelé p exemple "brain_microservice1.service" dans mon cas:
Au sein de ce nouveau service dans lequel vous vous trouvez:
Donnez les autorisations:
Donnez ensuite l'autorisation d'exécution:
Activez ensuite, cela fera alors toujours démarrer au démarrage
Ensuite, vous pouvez le tester;
$ sudo reboot now
Terminer = SUCCÈS !!
Cela peut être fait avec le même script de corps pour exécuter le shell, réagir ... le script de démarrage de la base de données ... tout type de code os ... espérons que cette aide vous ...
...
la source
Je me suis référé à ce blog, toujours un bon choix
https://blog.xyzio.com/2016/06/14/setting-up-a-golang-website-to-autorun-on-ubuntu-using-systemd/
vim /lib/systemd/system/gosite.service
la source
Voici une méthode plus simple!
Tout d'abord: écrivez un script shell et enregistrez-le au format .sh voici un exemple
ce script désactivera le clavier interne au démarrage.
Deuxièmement: Ouvrez l'application "Préférences d'application de démarrage"
entrez la description de l'image ici
entrez la description de l'image ici
Troisièmement: cliquez sur Ajouter. quatrième: dans la section NOM, donnez un nom. cinquième: dans la section des commandes, accédez à votre .sh. sixième: éditez votre section de commande pour:
septième: cliquez sur Ajouter. C'est ça! Fini!
Confirmez maintenant en redémarrant votre PC.
à votre santé!
la source
La méthode indolore, la plus simple et la plus universelle est simplement de l'exécuter avec
~.bash_profile
ou~.profile
(si vous n'avez pas le fichier bash_profile) .Ajoutez simplement la commande d'exécution au bas de ce fichier et elle sera exécutée au démarrage du système.
J'ai celui-ci en bas un exemple;
~\Desktop\sound_fixer.sh
la source
~/.bash_profile
s'exécute lorsque l'utilisateur se connecte - pas au démarrage du système. Dans la question d'origine, l'intention est d'exécuter un serveur d'application Node.js au démarrage de la machine. Votre solution nécessiterait qu'un utilisateur humain se connecte d'abord à la machine avant l'exécution du serveur Node.js. Et, si une sorte de problème provoque un redémarrage du serveur pendant la nuit, l'application ne reviendra jamais à la vie jusqu'à ce que l'humain sePour certaines personnes, cela fonctionnera:
Vous pouvez simplement ajouter la commande suivante dans Système → Préférences → Applications de démarrage :
la source