Новомодный сценарий не работает

Я пытаюсь создать свой собственный сценарий, который выполняется на запуске и остановился на завершении работы (относящийся к классической System V init стиль), но это не будет работать!

Я создал этот сценарий (/etc/init.d/mlogscript):

#!/bin/bash
### BEGIN INIT INFO
# Provides:             logging down time and date of your start/shutdown behaviour
# Required-Start:       $all
# Required-Stop:        $all
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    logs down your start/shutdown behaviour
# Description:          script for logging when you start or shutdown the operating system
### END INIT INFO
# Author: x

# log-file info
FILENAME="logscript.log"
FILEPATH="$HOME/myScripts/"

# other files
UPTIMEFILE=${FILEPATH}"LASTUPTIME.DONOTDELETE"

# fetch specific data
DATE=`date +%m.%d.%Y`
CLOCK=`date +%X`

case "$1" in
    start)
    if [ ! -e "${FILEPATH}${FILENAME}" ]; then
        echo "creating log-file"
        echo -ne "mLog: start/shutdown behaviour\n" >> "${FILEPATH}${FILENAME}"
        echo -e "-------------------------------\n" >> "${FILEPATH}${FILENAME}"
    fi
    echo -e '[' $DATE "]\nuser:\t" $USER "\nstart:\t" $CLOCK >> "${FILEPATH}${FILENAME}"

    # create/update uptime-file
    UPTIME=$(</proc/uptime)
    UPTIME=${UPTIME%%.*}
    echo -ne $UPTIME > $UPTIMEFILE

    echo "log-script started at" $DATE "."
        ;;
    stop)
    if [ -e "${FILEPATH}${FILENAME}" ]; then
        # get uptime from /proc/uptime
        UPTIME=$(</proc/uptime)
        UPTIME=${UPTIME%%.*}

        # 
        if [ -e "${UPTIMEFILE}" ]; then
            LASTUPTIME=$(head -n 1 "${UPTIMEFILE}")
            UPTIME=`expr $UPTIME - $LASTUPTIME`
            echo $UPTIME
        fi

        SECONDS=$((UPTIME%60))
        MINUTES=$((UPTIME/60%60))
        HOURS=$((UPTIME/60/60%24))
        DAYS=$((UPTIME/60/60/24%365))
        YEAR=$((UPTIME/60/60/24/365))
        # write to file
        echo -ne "end:\t" $CLOCK "\nuptime:\tY" $YEAR ' D' $DAYS ' H' $HOURS ' M' $MINUTES ' S' $SECONDS "\n\n" >> "${FILEPATH}${FILENAME}"
        echo "log-script stopped"
    else
        echo "log-file doesn't exist"
    fi
        ;;
    restart)
    if [ -e "${FILEPATH}${FILENAME}" ]; then
        exec $(readlink -f "$0") stop
        $(readlink -f "$0") start
        echo -e "log-script restarted"
    fi
        ;;
    reset)
    echo -e "log-script reset"
    if [ -e "${FILEPATH}${FILENAME}" ]; then
        rm "${FILEPATH}${FILENAME}"
        exec $(readlink -f "$0") start
    fi
    ;;
esac
exit 0

После этого я установил владельца и группу файла для "базирований" путем выполнения

sudo chown root:root /etc/init.d/mlogscript

Наконец, что не менее важно, я создал определенные для времени выполнения символьные ссылки в дистанционном управлении [0-6].d папки:

sudo update-rc.d mlogscript defaults 98

После того, как я перезагрузил свою систему, ничего не происходит, почему?

1
задан 21 April 2014 в 14:34

1 ответ

  1. Открывают Dash
  2. Search для "Приложений Запуска" и открываются, он
  3. Нажимает на кнопку "Add".
  4. диалоговое окно позволяет Вам определить имя, команда, которая будет выполняться, и комментарии.
  5. Нажимают на "Add" для сохранения той команды к списку.

Ubuntu тогда выполнит все команды в этом списке во время запуска. Я использую это для выполнения моего собственного сценария изменения обоев на запуске, и это оказалось надежным.

я думаю, что необходимо знать это, но тем не менее, не забыть добавлять & в конце команды, чтобы продолжать управлять сценарием в фоне и предотвратить ненужную отладку и разочарование.

Жаль, но я не знаю способ сделать это от терминала.

0
ответ дан 21 April 2014 в 14:34

Другие вопросы по тегам:

Похожие вопросы: