Bonjour,
J'ai rédigé il y a quelques temps déjà, un petit script permettant de gérer les services sous Slackware, à savoir démarrer/arreter/redémarrer un service comme httpd ou mysqld, et pouvoir gérer quels services doivent être lancés au démarrage de la machine. Ce petit script bash fonctionne, mais je pense qu'il est perfectible et le soumet afin de l'améliorer et d'en faire profiter tout le monde.
Voici quelques exemples de son usage :
service httpd start : démarre apache
service httpd +start : démarre apache et active son lancement au démarrage du système
service httpd -stop : arrete apache et désactive son lancement au démarrage du système
Voici le script :
#! /bin/sh
# /sbin/service
# Manage System services
service=$1
act=$2
export service act
activate () {
echo $service is now started at boot time
chmod 755 /etc/rc.d/rc.$service
}
inactivate () {
echo $service is now disable at boot time
chmod 222 /etc/rc.d/rc.$service
}
test_active () {
if [ `echo $act | grep "-" | wc -c` -gt 0 ]
then
inactivate
fi
if [ `echo $act | grep "+" | wc -c` -gt 0 ]
then
activate
fi
}
start (){
echo 'starting' $service '...'
chmod 755 /etc/rc.d/rc.$service
sh /etc/rc.d/rc.$service start
test_active
}
stop (){
echo 'stopping' $service '...'
chmod 755 /etc/rc.d/rc.$service
sh /etc/rc.d/rc.$service stop
test_active
}
list_active () {
echo 'active services :'
ls -l /etc/rc.d/* | grep rwxr-xr-x
}
list_inactive () {
echo 'inactive services :'
ls -l /etc/rc.d/* | grep -v rwxr-xr-x
}
list_all () {
if [ `echo $service | wc -c` -gt 1 ]
then
if [ `ls -l /etc/rc.d/rc.$service | grep rwxr-xr-x | wc -c` -gt 1 ]
then
echo $service 'is active'
else
echo $service 'is not active'
fi
else
list_inactive
list_active
fi
}
apply () {
case "$act" in
*'start')
start
;;
*'stop')
stop
;;
*'restart')
stop
start
;;
*)
list_all
esac
}
usage () {
echo 'usage : '
echo ' service ['service'|active|inactive|?] [+|-][start|stop|restart]'
echo ''
echo ' where 'service' can be the name of a service'
echo ''
echo ' active : list all actives services on boot'
echo ' inactive : list all inactives services on boot'
echo ' ? : display this help information'
echo ' + : after stopping/starting a service, activate it for auto start at boot time'
echo ' - : after stopping/starting a service, unactivate its auto start at boot time'
echo ' start : start a service'
echo ' stop : stop a service'
echo ' restart : restart a service'
echo ''
echo ' with just a service name, the command prints if the service is active at boot time or not.'
echo ' without any argument, the command prints the list of all inactive and actives services.'
}
case "$1" in
'active')
list_active
;;
'inactive')
list_inactive
;;
'?')
usage
;;
*)
apply
esac
exit 0
Voilà, j'espére que vous n'hésiterez pas à y apporter vos améliorations.
Bonne journée.
# déjà existant
Posté par dlblinux . Évalué à 1.
Je ne connais pas slackware comme distribution, mais d'autre outils existent déjà pour faire ce travail.
Personnellement, j'utilise sysv-rc-conf sur Debian pour configurer le lancement des services et je fais /etc/init.d/$service (start|stop) pour démarrer ou arrêter un service.
Je n'ai pas encore ressenti le besoin d'écrire un script pour automatiser ces deux tâches, mais sinon, on peut améliorer un petit peu ce qui est présenté ici.
À première vue :
- protéger les variables par des "
- utiliser test -(r|w|x) au lieu de ls -l | grep pour connaître les droits sur les fichiers
- remplacer la suite d'echo par un cat <<FIN
- gestion de code retour en cas d'échec
Bonne continuation.
[^] # Re: déjà existant
Posté par Prosper . Évalué à 4.
Je ne connais pas slackware comme distribution, mais d'autre outils existent déjà pour faire ce travail.
Personnellement, j'utilise sysv-rc-conf sur Debian pour configurer le lancement des services et je fais /etc/init.d/$service (start|stop) pour démarrer ou arrêter un service.
Oui bin ca tombe bien , la ca parle de slackware qui est une distro avec un systeme init assez particulier.
pfff..
[^] # Re: déjà existant
Posté par MsK` . Évalué à -4.
[^] # Re: déjà existant
Posté par Prosper . Évalué à 3.
[^] # Re: déjà existant
Posté par dlblinux . Évalué à 0.
Ne connaissant pas d'interface pour slackware, j'invite seulement à chercher un équivalent de sysv-rc-conf.
Avant de créer quelque chose, je regarde souvent si cela n'existe pas déjà, histoire de gagner du temps et de ne pas réinventer la roue.
Pas vous ?
# --
Posté par Psychofox (Mastodon) . Évalué à 4.
Par exemple pour apache, si tu veux démarrer/stopper ton service, tu utilises bêtement apachectl. Si tu veux qu'il se lance au démarrage, tu n'as qu'à rendre executable le script rc.apache ou rc.httpd (je ne me rappelle plus) qui est dans /etc/rc.d . A quoi sert de rajouter une couche en plus (ton script dans ce cas) ?
[^] # Re: --
Posté par astennu . Évalué à 4.
L'autre interet est de pouvoir lister les services lancés au démarrage et de les rendre actif/inactif au démarrage de la machine.
par exemple :
root@pcad:~# service active
active services :
-rwxr-xr-x 1 root root 893 Jan 29 2003 /etc/rc.d/rc.4
-rwxr-xr-x 1 root root 4782 Sep 12 2003 /etc/rc.d/rc.6
-rwxr-xr-x 1 root root 2013 Feb 27 2003 /etc/rc.d/rc.K
-rwxr-xr-x 1 root root 7634 Sep 15 2003 /etc/rc.d/rc.M
-rwxr-xr-x 1 root root 8312 Aug 28 2003 /etc/rc.d/rc.S
-rwxr-xr-x 1 root root 3949 Aug 26 2003 /etc/rc.d/rc.cups
-rwxr-xr-x 1 root root 136 Jun 3 13:09 /etc/rc.d/rc.font
-rwxr-xr-x 1 root root 401 Mar 5 2003 /etc/rc.d/rc.httpd
-rwxr-xr-x 1 root root 4038 Sep 21 2003 /etc/rc.d/rc.inet1
-rwxr-xr-x 1 root root 4419 Sep 21 2003 /etc/rc.d/rc.inet2
-rwxr-xr-x 1 root root 497 Sep 12 2003 /etc/rc.d/rc.inetd
-rwxr-xr-x 1 root root 147 Jun 3 11:59 /etc/rc.d/rc.keymap
-rwxr-xr-x 1 root root 113 Oct 3 1995 /etc/rc.d/rc.local
-rwxr-xr-x 1 root root 25550 Jun 4 17:33 /etc/rc.d/rc.modules
-rwxr-xr-x 1 root root 2259 May 20 2004 /etc/rc.d/rc.mysqld
-rwxr-xr-x 1 root root 126 Jun 3 13:04 /etc/rc.d/rc.netdevice
-rwxr-xr-x 1 root root 728 Apr 7 2003 /etc/rc.d/rc.samba
-rwxr-xr-x 1 root root 861 May 29 2002 /etc/rc.d/rc.syslog
-rwxr-xr-x 1 root root 1740 Sep 11 1999 /etc/rc.d/rc.sysvinit
Et par exemple, je décides de ne plus lancer le démon mysql au démarrage du PC :
root@pcad:~# service mysqld -stop
stopping mysqld ...
mysqld is now disable at boot time
certes, ls et chmod font très bien l'affaire, mais bon, hein, fallait bien une bonne raison de faire chauffer vim ;)
[^] # Re: --
Posté par Psychofox (Mastodon) . Évalué à 4.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.