A voir également:
- Exécuter un alias au démarrage
- Ordinateur lent au démarrage - Guide
- Rebooter un pc au démarrage - Guide
- Forcer demarrage pc - Guide
- Qu'est ce qui se lance au démarrage de l'ordinateur - Guide
- Problème démarrage windows 10 - Guide
7 réponses
voici mon fichier:
cd && cd mc-server && sudo screen java -Xms512M -Xmx1024M -XX:MaxPermSize=128M $=128M -jar spigot.jar nogui
Si l'idée est de lancé un service, plutôt que d'écrire dans /etc/rc.local, il serait plus propre de créer un service. Tu peux par exemple repartir de
https://forums.commentcamarche.net/forum/affich-25769449-minecraft-serveur#1
j'ai mis ma ligne de commande dans rc.local, j'ai exécuté le fichier, tout marche.
mas si j’éteins la machine, le processus (qui est un screen) n'apparait pas après la commande screen -r et le serveur est inaccessible.
Alors soit j'ai mal compris, soit tu n'as pas bien compris ce que fait la commande screen.
La commande
Par exemple, supposons que tu es à la maison et tu veux lancer un calculer sur un serveur au travail, tu vas te connecter à ce serveur. Si tu lances ton calcul sans screen, dès que tu te déconnectes (depuis la maison) de ce serveur, le calcul va s'arrêter. Pourquoi ? Parce qu'en te déconnectant, tu vas également tuer le processus (typiquement un shell) qui t'a permis de lancer le calcul, et donc le programme de calcul aussi.
C'est là que
Toutefois, cela suppose que le serveur continue à être allumer pour faire ses calculs ! Si tu éteins le serveur, il tue tous ses processus, ce qui inclue les éventuels screens et les processus qui y sont attachés.
Du coup quand tu dis que lorsque tu éteins ta machine, ton programme devient inaccessible, eh bien c'est tout à fait normal, et le screen n'y changera rien.
Bonne chance
cd && cd mc-server && sudo screen java -Xms512M -Xmx1024M -XX:MaxPermSize=128M $=128M -jar spigot.jar nogui
Si l'idée est de lancé un service, plutôt que d'écrire dans /etc/rc.local, il serait plus propre de créer un service. Tu peux par exemple repartir de
https://forums.commentcamarche.net/forum/affich-25769449-minecraft-serveur#1
j'ai mis ma ligne de commande dans rc.local, j'ai exécuté le fichier, tout marche.
mas si j’éteins la machine, le processus (qui est un screen) n'apparait pas après la commande screen -r et le serveur est inaccessible.
Alors soit j'ai mal compris, soit tu n'as pas bien compris ce que fait la commande screen.
La commande
screenpermet de lancer une application en l'associant à un screen, puis de la "récupérer" par la suite avec la commande
screen.
Par exemple, supposons que tu es à la maison et tu veux lancer un calculer sur un serveur au travail, tu vas te connecter à ce serveur. Si tu lances ton calcul sans screen, dès que tu te déconnectes (depuis la maison) de ce serveur, le calcul va s'arrêter. Pourquoi ? Parce qu'en te déconnectant, tu vas également tuer le processus (typiquement un shell) qui t'a permis de lancer le calcul, et donc le programme de calcul aussi.
C'est là que
screenintervient. Tu te connectes à ton serveur, tu lances un screen, puis ton calcul dedans. Au moment où tu te déconnectes, le screen reste en vie et donc la calcul aussi.
Toutefois, cela suppose que le serveur continue à être allumer pour faire ses calculs ! Si tu éteins le serveur, il tue tous ses processus, ce qui inclue les éventuels screens et les processus qui y sont attachés.
Du coup quand tu dis que lorsque tu éteins ta machine, ton programme devient inaccessible, eh bien c'est tout à fait normal, et le screen n'y changera rien.
Bonne chance
Bonjour,
Réponse courte
C'est une mauvaise idée de définir un alias dans un script shell, mieux vaut écrire la commande non aliasés.
Réponse détaillée
Disons que tu parles de deux choses qui sont indépendants :
- un alias est une manière de nommer une commande
- ensuite lancer une script au démarrage c'est vague : au démarrage de linux ?
Donc typiquement sous debian écrire dans /etc/rc.local permet de lancer des tâches au démarrage. Dedans tu écris un script shell, et tu finis par un
Typiquement ce script :
... quand il est lancé, écrit bien "bonjour".
Conclusion : c'est faisable !
Mais il faut s'assurer que le shell qui invoque ton script au lancement (/etc/rc.local) est bien du bash (ou un shell qui comprend la directive "alias"), ce qui n'est pas garanti dans le cas général. C'est d'ailleurs pour ça qu'en général on évite les alias dans les scripts shell.
La bonne nouvelle en tout cas, c'est que l'alias n'est pas maintenu (exporté) à la sortie du script.
Bonne chance
Réponse courte
C'est une mauvaise idée de définir un alias dans un script shell, mieux vaut écrire la commande non aliasés.
Réponse détaillée
Disons que tu parles de deux choses qui sont indépendants :
- un alias est une manière de nommer une commande
- ensuite lancer une script au démarrage c'est vague : au démarrage de linux ?
Donc typiquement sous debian écrire dans /etc/rc.local permet de lancer des tâches au démarrage. Dedans tu écris un script shell, et tu finis par un
exit 0. Ensuite j'imagine que rien n'empêche de définir un alias (même si ça ne se fait pas) et de l'utiliser dans ton script.
Typiquement ce script :
alias coucou="echo bonjour"
coucou
... quand il est lancé, écrit bien "bonjour".
Conclusion : c'est faisable !
Mais il faut s'assurer que le shell qui invoque ton script au lancement (/etc/rc.local) est bien du bash (ou un shell qui comprend la directive "alias"), ce qui n'est pas garanti dans le cas général. C'est d'ailleurs pour ça qu'en général on évite les alias dans les scripts shell.
La bonne nouvelle en tout cas, c'est que l'alias n'est pas maintenu (exporté) à la sortie du script.
Bonne chance
Tu recopies simplement ton script dans /etc/rc.local. Tu peux ensuite le tester en lançant la commande :
Bonne chance
/etc/rc.local
Bonne chance
merci beaucoup,
dans mon fichier rc.local, je met quoi ?(en dehors de la commande) car il est vide.
ensuite, le script shell, je le met ou ?
merci d'avance.
dans mon fichier rc.local, je met quoi ?(en dehors de la commande) car il est vide.
ensuite, le script shell, je le met ou ?
merci d'avance.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
tu peut aussi toute automatiser lors du démarrage de ta machine,
En ajoutant la commande pour démarrer ton script dans le fichier .profiles
de ton profiles :p
voila
cordialement
Roche Corentin
tu peut aussi toute automatiser lors du démarrage de ta machine,
En ajoutant la commande pour démarrer ton script dans le fichier .profiles
de ton profiles :p
voila
cordialement
Roche Corentin
Bonjour Corentin,
Merci pour ta réponse, mais attention il faut distinguer deux choses :
-
-
Ils n'agissent donc pas au même moment. En ce sens,
Merci pour ta réponse, mais attention il faut distinguer deux choses :
-
/etc/profileest lu au démarrage d'un shell (d'un terminal)
-
/etc/rc.localest lu au démarrage de la même machine
Ils n'agissent donc pas au même moment. En ce sens,
/etc/profilene répond pour moi pas à la question initialement posée.
merci a tous pour vos réponses.
pour resumer, je doit donc mettre ma commande dans etc/init.d/rc.local ou dans ke fichier. profile.(je dit commande ca mon fichier shell se compose juste d'une commande).
merci encore
vivelesgrecs
--
pour resumer, je doit donc mettre ma commande dans etc/init.d/rc.local ou dans ke fichier. profile.(je dit commande ca mon fichier shell se compose juste d'une commande).
merci encore
vivelesgrecs
--
bonjour,
j'ai mis ma ligne de commande dans rc.local, j'ai exécuté le fichier, tout marche.
mas si j’éteins la machine, le processus (qui est un screen) n'apparait pas après la commande screen -r et le serveur est inaccessible.
voici mon fichier:
merci d'avance,
vivelesgrecs
j'ai mis ma ligne de commande dans rc.local, j'ai exécuté le fichier, tout marche.
mas si j’éteins la machine, le processus (qui est un screen) n'apparait pas après la commande screen -r et le serveur est inaccessible.
voici mon fichier:
cd && cd mc-server && sudo screen java -Xms512M -Xmx1024M -XX:MaxPermSize=128M $=128M -jar spigot.jar nogui
merci d'avance,
vivelesgrecs
Bonjour mamiemando,
J'ai supprimé le cd mc-server puisque que je précise déjà le chemin du fichier qui est /home/minecraft/mc-server /spigot.jar.
J'ai également enlevé le sudo mais pas le screen puisque j'ai besoin de pouvoir récupérer le terminal du serveur.
sudo journalctl -xn donne ceci :
et voici le dernier script :
merci pour votre persévérance,
vivelesgrecs
J'ai supprimé le cd mc-server puisque que je précise déjà le chemin du fichier qui est /home/minecraft/mc-server /spigot.jar.
J'ai également enlevé le sudo mais pas le screen puisque j'ai besoin de pouvoir récupérer le terminal du serveur.
sudo journalctl -xn donne ceci :
-- Logs begin at lun. 2017-04-03 11:54:28 UTC, end at lun. 2017-04-03 17:07:26 UTC
avril 03 17:07:23 raspberrypi systemd[1]: Starting LSB: minecraft server Descripti
-- Subject: L'unité (unit) minecraft.service a commencé à démarrer
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- L'unité (unit) minecraft.service a commencé à démarrer.
avril 03 17:07:23 raspberrypi minecraft[11708]: /etc/init.d/minecraft: 9: /etc/ini
avril 03 17:07:23 raspberrypi minecraft[11708]: /etc/init.d/minecraft: 10: /etc/in
avril 03 17:07:23 raspberrypi minecraft[11708]: /etc/init.d/minecraft: 11: /etc/in
avril 03 17:07:23 raspberrypi systemd[1]: minecraft.service: control process exite
avril 03 17:07:23 raspberrypi systemd[1]: Failed to start LSB: minecraft server De
-- Subject: L'unité (unit) minecraft.service a échoué
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- L'unité (unit) minecraft.service a échoué, avec le résultat failed.
avril 03 17:07:23 raspberrypi systemd[1]: Unit minecraft.service entered failed st
avril 03 17:07:23 raspberrypi sudo[11687]: pam_unix(sudo:session): session closed
avril 03 17:07:26 raspberrypi sudo[11719]: minecraft : TTY=pts/0 ; PWD=/home/minec
avril 03 17:07:26 raspberrypi sudo[11719]: pam_unix(sudo:session): session opened
et voici le dernier script :
#!/bin/sh
### BEGIN INIT INFO
# Provides: minecraft Required-Start: $remote_fs
# Required-Stop: Default-Start: 2 3 4 5 Default-Stop:
# Short-Description: minecraft server Description: minecraft
# server
### END INIT INFO
. /lib/lsb/init-functions [ -f /etc/default/rcS ] && .
/etc/default/rcS PATH=/bin:/usr/bin:/sbin:/usr/sbin case
"$1" in
start)
log_begin_msg "Starting minecraft server"
screen java -Xms512M -Xmx1024M -XX:MaxPermSize=128M -jar /home/minecraft/$
log_end_msg 0
;;
stop)
kill -9 $(ps -eo pid,cmd | grep java | grep
spigot.jar | cut -d" " -f2)
;;
force-reload|restart)
$0 start
;;
status)
exit 0
;;
*)
log_success_msg "Usage: /etc/init.d/minecraft
{start|stop|restart|force-reload|status}"
exit 1 esac
exit 0
merci pour votre persévérance,
vivelesgrecs
screen java -Xms512M -Xmx1024M -XX:MaxPermSize=128M -jar /home/minecraft/$
Le $ me paraît suspect. Si tu as moyen de lancer directement ton ".jar" en tant que daemon, c'est mieux que screen. Si aucune de ces deux solutions ne marche tu peux essayer avec
nohup:
nohup java -jar myapp.jar &
Quelle que soit la solution adopitée, il faut la tester au préalable dans une ligne de commande. Elle doit :
1) se lancer correctement,
2) rendre la main.
Bonne chance
A priori rien n'empêche de lancer un service via
Si la commande que tu mets dans ce script marche en root, ton service devrait marcher. Peut-être que tu avais déjà une instance de ton serveur qui était lancée ?
Tu pourrais tester ton script pas à pas en copiant collant les lignes avant $1 puis les lignes qui sont dans le bloc "start".
Mais déjà dans ce que tu as copié collé je dirais qu'il manque au moins un retour à la ligne avant "case". Une erreur de syntaxe suffit à expliquer pourquoi ton script ne marche actuellement pas.
nohupdepuis un script de démarrage, c'est d'ailleurs une solution que tu trouves couramment sur Internet. Et a priori je ne vois aucune raison pour laquelle
screenne serait pas dans ce cas.
Si la commande que tu mets dans ce script marche en root, ton service devrait marcher. Peut-être que tu avais déjà une instance de ton serveur qui était lancée ?
Tu pourrais tester ton script pas à pas en copiant collant les lignes avant $1 puis les lignes qui sont dans le bloc "start".
Mais déjà dans ce que tu as copié collé je dirais qu'il manque au moins un retour à la ligne avant "case". Une erreur de syntaxe suffit à expliquer pourquoi ton script ne marche actuellement pas.
Pas si tu lances ton programme comme un démon au travers d'un service. C'est par exemple de cette manière qu'un serveur ssh fonctionne.
je voudrais juste que si il y ai une coupure de courant, le serveur se rallume automatiquement.
S'il y a une coupure de courant et que le service est dans la chaîne de démarrage, comme indiqué dans le lien :
https://forums.commentcamarche.net/forum/affich-25769449-minecraft-serveur#1
... ton serveur sera lancé au démarrage (au même titre que ssh).
Bonne chance
J'ai suivi le lien que tu m'as donné en remplacant bien tout les chemins de fichiers et en les remplaçants par le chemin des miens, je fait un reload daemon mais su je lance le service,il ne se passe rien...
Merci d'avance,
Vivelesgrecs