Crontab не запускает сценарий оболочки при перезагрузке системы - PullRequest
0 голосов
/ 26 февраля 2019

Итак, я запускаю Ubuntu 16.04 и пытаюсь запустить cronjob при запуске.Я подтвердил, что скрипт запускается, если я тоже изменю @reboot * * * * *.Я также пытался запустить задание от имени другого пользователя и пользователя root, ни один из них не работал.

Когда я запускаю системный журнал для CRON, я получаю:

Feb 26 05:59:22 embarks1 cron[738]: (CRON) INFO (pidfile fd = 3)
Feb 26 05:59:22 embarks1 cron[738]: (CRON) INFO (Skipping @reboot jobs -- not system startup)

Мой cronjob выглядит следующим образом.(Имя файла изменено)

@ reboot /etc/init.d/example.sh

Я не могу понять, как что или почему.Любая помощь будет оценена.

Редактировать 1 -

Вот мой файл init.d: ​​


### BEGIN INIT INFO
# Provides:         StartJenkins
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      1 0 6
# Short-Description: ...
# Description: ...
### END INIT INFO

APP_NAME="StartJenkins APP"
APP_DIR="~/Linux"

USER="ci"


USAGE="Usage: $0 {start}"

start_app() {
    echo "Starting $APP_NAME ..."
    su - $USER -c "cd $APP_DIR && ./startJenkins.sh"
}

case "$1" in
    start)
        start_app
    ;;

    *)
        echo $USAGE
        exit 1
    ;; 

1 Ответ

0 голосов
/ 26 февраля 2019

1) Создайте сценарий /etc/init.d/example с таким содержанием:

#!/bin/sh

### BEGIN INIT INFO
# Provides:          Example APP
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      1 0 6
# Short-Description: ...
# Description: ...
### END INIT INFO

APP_NAME="Example APP"
APP_DIR="/path/to/example"

USER="example"
GROUP="example"

USAGE="Usage: $0 {start|stop|restart|status}"

start_app() {
    echo "Starting $APP_NAME ..."
    su - $USER -c "cd $APP_DIR && ./example"
}

stop_app() {
    echo "NOT IMPLEMENTED"
}

status_app() {
    echo "NOT IMPLEMENTED"
}

restart_app() {
    echo "NOT IMPLEMENTED"
} 

case "$1" in
    start)
        start_app
    ;;

    stop)
        stop_app
    ;;

    restart)
        restart_app
    ;;

    status)
        status_app
    ;;

    *)
        echo $USAGE
        exit 1
    ;;
esac

или просто:

#!/bin/sh

### BEGIN INIT INFO
# Provides:          Example APP
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      1 0 6
# Short-Description: ...
# Description: ...
### END INIT INFO

APP_NAME="Example APP"
APP_DIR="/path/to/example"

USER="example"
GROUP="example"

USAGE="Usage: $0 {start}"

start_app() {
    echo "Starting $APP_NAME ..."
    su - $USER -c "cd $APP_DIR && ./example"
}

case "$1" in
    start)
        start_app
    ;;

    *)
        echo $USAGE
        exit 1
    ;;
esac

2) Задайте значения по умолчанию и включите:

cd /etc/init.d
chmod +x example
update-rc.d example defaults
update-rc.d example enable
...