J'ai voulu sous cet utilisateur me rendre dans le fichier minecraft_srv.service : cd /etc/systemd/system/minecraft_srv.service mais ça me met
bash: cd: /minecraft_srv.service: No such file or directory.
La commande
cd permet de se rendre dans un répertoire et non un fichier. Tu peux faire :
cd /etc/systemd/system/
cat minecraft_srv.service (pour visualiser) OU nano minecraft_srv.service (pour modifier)
Certainement parce que je n'y ai pas les droits puisque sous l'utilisateur root j'y arrive. Mais dans ce cas comment je peux donner les droits à herobrix si je ne peux même pas m'y rendre ?
Car je pensais effectuer cette commande : chmod 777 minecraft_srv.service.
Il n'est pas utile de faire ça, car ce n'est pas un script mais un service. Pour donner des droits, c'est différent.
En lançant le
systemctl start minecraft_srv, le serveur se lancera bien avec l'utilisateur
herobrix. (Car dans le fichier service tu as indiqué sur la ligne
User=herobrix)
Si tu veux le mettre en
crontab -e avec l'utilisateur
herobrix, ou lancer la commande via
herobrix, il faut dans ce cas donner des droits d’exécution via sudo.
Pour ça :
apt-get install sudo
visudo
Un editeur de texte s'ouvre (préfère nano s'il le demande).
On va autoriser le démarrage/arrêt/relance/status du service + lancer un reboot avec ton utilisateur herobrix :
Rempli comme ce qui suit, à l'endroit où il y a les #xxxxxxxx
Code:
# Cmnd alias specification
Cmnd_Alias HEROBRIX_CMDS = /bin/systemctl start minecraft_srv, /bin/systemctl stop minecraft_srv, /bin/systemctl restart minecraft_srv, /bin/systemctl status minecraft_srv, /sbin/reboot
# User privilege specification
herobrix ALL=NOPASSWD: HEROBRIX_CMDS
Dorénavent, tu peux te connecter avec ton utilisateur herobrix et lancer les commandes suivantes :
-
sudo systemctl start minecraft_srv (démarre le serveur spigot)
-
sudo systemctl stop minecraft_srv (arrête le serveur spigot)
-
sudo systemctl restart minecraft_srv (relance le serveur spigot)
-
sudo systemctl status minecraft_srv (pour afficher l'état du serveur)
-
sudo reboot (pour relancer la machine)
Enfin, j'aimerais redémarrer la machine toutes les 4 heures. Pour cela je me sers de la commande crontab -e.
Le redémarrage de la machine et du serveur se font correctements mais j'aimerais avant chaque redémarrage de la machine, arrêter le serveur pour que ce soit le plus propre possible sauf que en regardant les logs je vois cette erreur qui s'affiche lors de la fermeture
Il y aurait moyen de l'arrêter avec la commande stop sur le screen ?
Oui.
Attention, ce qui suit, je parle de redémarrer la machine ! (Donc arrêter le serveur minecraft puis redémarrer la machine).
On va se baser sur le système sudo pour autoriser le reboot via l'utilisateur herobrix.
Tu peux faire un script comme celui-ci par exemple (imaginons que le script s’appelle
reboot_machine.sh) :
Code:
#!/bin/bash
#On avertit les joueurs que le serveur va se couper
/usr/bin/screen -p 0 -S herobrix -X eval 'stuff "Attention : Le serveur va se relancer dans 30 secondes."\015'
#On met en pause le script 30 secondes
sleep 30
#On arrête le serveur minecraft puis on met le script en pause 5 secondes.
/usr/bin/screen -p 0 -S herobrix -X eval 'stuff "stop"\015'
sleep 5
#On redémarre la machine
sudo /sbin/reboot
Depuis le début j'ai utilisé
herobrix mais si tu l'as changé, il faut faire la modif ici aussi (...0 -S ICI -X eval....)
On créer ensuite la tâche planifiée.
Sous l'utilisateur herobrix :
crontab -e
Mettre cette ligne (pour reboot toutes les 4 heures) :
Code:
0 */4 * * * /chemin_du_script/reboot_machine.sh