Question

En ce moment, je dois y aller /usr/java/apache-solr-1.4.0/example puis faites :

java -jar start.jar

Comment faire pour que cela démarre automatiquement au démarrage ?

Je suis sur un serveur Linux partagé.

Était-ce utile?

La solution

Si vous disposez d'un accès root à votre ordinateur, il existe plusieurs façons de procéder en fonction du flux d'initialisation de votre système (scripts d'initialisation, systemd, etc.)

Mais si vous n'avez pas de root, cron dispose d'un moyen propre et cohérent d'exécuter des programmes au redémarrage.

Tout d’abord, découvrez où se trouve Java sur votre machine.La commande ci-dessous vous indiquera où il se trouve :

$ which java

Ensuite, collez le code suivant dans un script shell, en remplaçant le chemin Java ci-dessous (/usr/bin) par le chemin que vous avez obtenu à partir de la commande ci-dessus.

#!/bin/bash

cd /usr/java/apache-solr-1.4.0/example
/usr/bin/java -jar start.jar

Vous pouvez enregistrer ce script à un emplacement (par exemple, $HOME) sous start.sh.Donnez-lui l'autorisation d'exécution mondiale (pour simplifier) ​​en exécutant la commande suivante :

$ chmod og+x start.sh

Maintenant, testez le script et assurez-vous qu'il fonctionne correctement à partir de la ligne de commande.

$ ./start.sh

Si tout fonctionne bien, vous devez l'ajouter à l'un des scripts de démarrage de votre machine.La manière la plus simple de procéder consiste à ajouter la ligne suivante à la fin de /etc/rc.local.

# ... snip contents of rc.local ...
# Start Solr upon boot.
/home/somedir/start.sh

Alternativement, si vous n'êtes pas autorisé à modifier rc.local, vous pouvez l'ajouter ainsi à votre crontab utilisateur.Tapez d’abord ce qui suit sur la ligne de commande :

$ crontab -e

Cela fera apparaître un éditeur.Ajoutez-y la ligne suivante :

@reboot /home/somedir/start.sh

Si votre système Linux le prend en charge (ce qui est généralement le cas), cela garantira que votre script sera exécuté au démarrage.

Si je n’ai aucune faute de frappe ci-dessus, cela devrait bien fonctionner pour vous.Faites-moi savoir comment ça se passe.

Autres conseils

Comme vous êtes sur une boîte Linux partagée, vous devrez demander à l'administrateur du système pour faire ce qui suit, sans doute.

Créer un script de démarrage dans /etc/init.d/solr.

Copiez ce code, mon script de démarrage Solr, dans ce fichier:

#!/bin/sh

# Prerequisites:
# 1. Solr needs to be installed at /usr/local/solr/example
# 2. daemon needs to be installed
# 3. Script needs to be executed by root

# This script will launch Solr in a mode that will automatically respawn if it
# crashes. Output will be sent to /var/log/solr/solr.log. A PID file will be
# created in the standard location.

start () {
    echo -n "Starting solr..."

    # Start daemon
    daemon --chdir='/usr/local/solr/example' --command "java -jar start.jar" --respawn --output=/var/log/solr/solr.log --name=solr --verbose

    RETVAL=$?
    if [ $RETVAL = 0 ]
    then
        echo "done."
    else
        echo "failed. See error code for more information."
    fi
    return $RETVAL
}

stop () {
    # Stop daemon
    echo -n "Stopping solr..."

    daemon --stop --name=solr  --verbose
    RETVAL=$?

    if [ $RETVAL = 0 ]
    then
        echo "Done."
    else
        echo "Failed. See error code for more information."
    fi
    return $RETVAL
}


restart () {
    daemon --restart --name=solr  --verbose
}


status () {
    # Report on the status of the daemon
    daemon --running --verbose --name=solr
    return $?
}


case "$1" in
    start)
        start
    ;;
    status)
        status
    ;;
    stop)
        stop
    ;;
    restart)
        restart
    ;;
    *)
        echo $"Usage: solr {start|status|stop|restart}"
        exit 3
    ;;
esac

exit $RETVAL

Ensuite, exécutez:

  

chkconfig --add solr

Ou (sur Ubuntu):

  

par défaut Solr update-rc.d

... ou, si votre distribution Linux ne pas chkconfig (ou update-rc.d), lien /etc/init.d/solr à /etc/rc3.d/S99solr et /etc/rc5.d/S99solr et /etc/rc3.d/K01solr et /etc/rc5.d/K01solr:

% ln -s /etc/init.d/solr /etc/rc3.d/S99solr

% ln -s /etc/init.d/solr /etc/rc5.d/S99solr

% ln -s /etc/init.d/solr /etc/rc3.d/K01solr

% ln -s /etc/init.d/solr /etc/rc5.d/K01solr

Maintenant, au redémarrage Solr redémarre dans les niveaux d'exécution 3 et 5 (console avec le réseau et plein ).

Pour commencer solr exécuter manuellement:

% /etc/init.d/solr start

Ajout des lignes suivantes à mon dossier /etc/init.d/solr fonctionne pour soutenir Red Hat Linux (je les ai copiés à partir /etc/init.d/mysql après avoir lu les commentaires par d'autres ici).

# Comments to support chkconfig on Red Hat Linux
# chkconfig: 2345 64 36
# Description: A very fast and reliable search engine.

Il y a trois étapes que vous devez faire ici:

  1. Créer le script, le rendre exécutable, et le mettre dans le bon endroit.
  2. le script de démarrage correctement au redémarrage.
  3. Bonus: Mettre en place un script logrotation si les journaux ne reçoivent pas de contrôle
  4. .

Pour le numéro un, j'ai accordé le script de Supermagic d'en haut. Il était OK, mais avait un certain nombre de fautes de frappe, manquait certaines fonctionnalités (état, redémarrage), ne pas utiliser l'utilitaire démon très efficacement.

Voici ma version du script (assurez-vous que vous avez démon installé pour que cela fonctionne):

#!/bin/sh

# Prerequisites:
# 1. Solr needs to be installed at /usr/local/solr/example
# 2. daemon needs to be installed
# 3. Script needs to be executed by root

# This script will launch Solr in a mode that will automatically respawn if it
# crashes. Output will be sent to /var/log/solr/solr.log. A pid file will be 
# created in the standard location.

start () {
    echo -n "Starting solr..."

    # start daemon
    daemon --chdir='/usr/local/solr/example' --command "java -jar start.jar" --respawn --output=/var/log/solr/solr.log --name=solr --verbose

    RETVAL=$?
    if [ $RETVAL = 0 ]
    then
        echo "done."
    else
        echo "failed. See error code for more information."
    fi
    return $RETVAL
}

stop () {
    # stop daemon
    echo -n "Stopping solr..."

    daemon --stop --name=solr  --verbose
    RETVAL=$?

    if [ $RETVAL = 0 ]
    then
        echo "done."
    else
        echo "failed. See error code for more information."
    fi
    return $RETVAL
}


restart () {
    daemon --restart --name=solr  --verbose
}


status () {
    # report on the status of the daemon
    daemon --running --verbose --name=solr
    return $?
}


case "$1" in
    start)
        start
    ;;
    status)
        status
    ;;
    stop)
        stop
    ;;
    restart)
        restart
    ;;
    *)
        echo $"Usage: solr {start|status|stop|restart}"
        exit 3
    ;;
esac

exit $RETVAL

Placez ce script à /etc/init.d/solr, le rendre exécutable, et vous devriez être bien avec la première étape. Vous pouvez maintenant démarrer / arrêter / redémarrage / état d'un démon solr avec /etc/init.d/solr start | stop | restart | état

Pour la deuxième étape, exécutez ce qui suit sur une machine Ubuntu (ne sais pas Redhat):

update-rc.d solr defaults

Une fois cela fait, vous êtes en assez bonne forme, mais vous voulez probablement faire tourner les journaux correctement à un moment donné, alors voici une bonne config pour les journaux:

/var/log/solr/*.log {
  weekly
  rotate 12
  compress
  delaycompress
  create 640 root root
  postrotate
    /etc/init.d/solr restart
  endscript
}

Placez ce fichier dans /etc/logrotate.d/solr, et vous devriez être bon d'aller, en supposant logrotate est en cours d'exécution (il est généralement).

Je répondu à cette question déjà une fois , mais cette réponse était pour les systèmes d'exploitation utilisés SysV et celui-ci est pour les nouveaux systèmes d'exploitation qui utilisent de plus en systemd .

mon autre réponse, il y a trois choses que vous devez faire ici:

  1. Créez le script et le mettre dans le bon endroit.
  2. le script de démarrage correctement au redémarrage.
  3. Bonus:. Faire les journaux de systemd persistante

1. Création du script et de le mettre dans le bon endroit

Voici un fichier unité de systemd que vous pouvez utiliser (qui remplacent les fichiers du SysV). Nom il solr.service.

[Unit]
Description=Apache Solr
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
Environment="XMX=2G"
WorkingDirectory=/usr/local/solr/example
ExecStart=/usr/bin/java -jar -server -Xmx${XMX} start.jar
Restart=on-failure
LimitNOFILE=10000

[Install]
WantedBy=multi-user.target

Notez qu'il ya une configuration là-dedans pour la mémoire de Solr. Vous aurez probablement envie de modifier cela à vos propres besoins. Si vous avez un certain nombre de variables que vous êtes de passage à systemd, vous pouvez le faire avec la directive EnvironmentFile.

Plus de documentation pour ces fichiers est .

2. Faire le démarrage du script correctement au démarrage

Ceci est assez simple, mais il y a des règles. Pour faire démarrer au démarrage, placez le fichier dans /etc/systemd/system/solr.service. Vous ne pouvez pas utiliser un lien symbolique dans ce répertoire, ne pas essayer .

Une fois que c'est là-dedans, vous pouvez activer le démon d'exécuter au démarrage avec:

sudo systemctl enable solr

Et vous pouvez démarrer, arrêter, avec le statut:

sudo systemctl {start|stop|status} solr

3. Faire les journaux de systemd persistante

Par défaut, les journaux de systemd ne sont pas persistants et ils sont perdus chaque fois que vous redémarrez le système. Si ce n'est pas ce que vous désirez, vous pouvez les faire persistante en créant un répertoire:

sudo mkdir -p /var/log/journal/

Et puis redémarrez le démon systemd journalisé:

sudo systemctl restart systemd-journald

Une fois cette étape terminée, démon de journalisation systemd recevra tous les stdout et stderr que Solr crée et elle est sauvegardée dans une format binaire sous /var/log/journal/.

La systemd façon gère l'exploitation forestière est assez propre et mérite d'être étudiée si vous n'êtes pas familier avec elle. En attendant, sachez juste que lire vos entrées de journal, vous aurez besoin d'utiliser un nouvel outil appelé journalctl. Par exemple, cela suivra vos journaux Solr:

journalctl -u solr -f

Et il y a aussi des drapeaux pour faire le filtrage et les choses fondé sur la date comme ça.

3.1 Peaufiner les fichiers journaux

section Bonus! Si vous souhaitez modifier les fichiers journaux, vous pouvez lire tout en la documentation , mais les valeurs par défaut sont en fait très sûr et sain d'esprit (les journaux sont compressés par défaut, ne peut pas croître trop grand, sont taux limités et sont écrits sur le disque par lots).

Les commentaires Suivre Supermagic, puis suivez cette

http://codingrecipes.com/service-x-does-not -Support-chkconfig

Il dit:

1 – Copy your script into /etc/init.d folder
2 – cd /etc/init.d
3 – chmod +x myscript
4 – Add these lines, including #, right after #!/bin/bash or #!/bin/sh:

# chkconfig: 2345 95 20
# description: Some description
# What your script does (not sure if this is necessary though)
# processname: myscript

Ensuite, vous pouvez faire

chkconfig --add MyScript

init.d / Solr script qui est testé sur CentOS 6 / Amazon Linux. Il enveloppe CLI natif de solr.

#!/bin/bash
# description: Starts and stops Solr production


PIDFILE=/var/run/solr.pid
SOLR_HOME=/usr/share/solr
START_COMMAND="$SOLR_HOME/bin/solr start -p 8984 -noprompt -m 1g"
NAME="Solr"


start() {
  echo  "Starting $NAME"
  if [ -f $PIDFILE ]; then
    echo -n "$PIDFILE exists. $NAME may be running."
  else
    str=`$START_COMMAND`
    pid=`echo $str | grep -o "pid=[0-9]*" | grep -o "[0-9]*"`
    if [ "$pid" == "" ];
    then
      echo "[FATAL ERROR] Failed to extract pid. Exiting!"
      exit 1
    fi
    echo $pid > $PIDFILE
  fi
  return 0
}


case "$1" in
  start)
    start
  ;;
  stop)
    echo "Stopping $NAME .."
    $SOLR_HOME/bin/solr stop
    rm -f $PIDFILE
  ;;
  status)
    $SOLR_HOME/bin/solr status
  ;;
  restart)
    $0 stop
    #sleep 2
    $0 start
  ;;

  *)
    echo "Usage: $0 (start | stop | restart | status)"
    exit 1
    ;;

esac
exit $?

Vérifier

man 5 crontab

Voyez si @reboot est pris en charge sur le système Linux que vous utilisez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top