Перезапуск сервиса из сценария

Я сделал бы это как так:

#!/bin/bash

FILENAME=$1

[ -f "$FILENAME" ] || exit

FILEBYTES=$(stat -c%s "$FILENAME")
FILEWORDS=$(wc -w "$FILENAME" | awk '{print $1}')
FILELINES=$(wc -l "$FILENAME" | awk '{print $1}')

printf "Size of %s -- %s bytes, %s words, %s lines.\n" \
        "$FILENAME" "$FILEBYTES" "$FILEWORDS" "$FILELINES"

Пример

Скажите, что у меня есть этот файл:

$ ls -l | grep bbbb
-rw-rw-r--   1 saml saml    3283 May 18 02:49 bbbb

Теперь я запускаю Ваш скрипт, я назвал его df.bash. df управление уже принято в Unix:

$ ./df.bash bbbb 
Size of bbbb -- 3283 bytes, 386 words, 94 lines.

Ищите файл, который не существует:

$ ./df.bash bbbbbbb
$ 

Альтернативный метод

Можно сохранить некоторые потраченные впустую вызовы путем консолидации и наличия awk сделайте подсчет вместо wc.

#!/bin/bash

FILENAME=$1

[ -f "$FILENAME" ] || exit

FILEBYTES=$(stat -c%s "$FILENAME")
FILEWORDS=$(awk '{ total = total + NF }; END {print total}' "$FILENAME")
FILELINES=$(awk 'END {print NR}' "$FILENAME")

printf "Size of %s -- %s bytes, %s words, %s lines.\n" \
        "$FILENAME" "$FILEBYTES" "$FILEWORDS" "$FILELINES"
3
26.08.2014, 16:29
2 ответа

Перед повторным запуском службы может потребоваться подождать несколько секунд, чтобы она правильно остановилась. Вы можете задержать ваш скрипт со следующей строкой

# waiting for 5 seconds
sleep 5

Вы можете увидеть более подробную информацию здесь - http://www.cyberciti.biz/faq/linux-unix-sleep-bash-scripting/

0
27.01.2020, 21:43

Я искал довольно долго, но я нашел одно решение здесь для этого SuperUser Q&A под названием: Как мне отделить процесс от терминала, полностью? , после того, как я написал свой вопрос здесь.

| at now
0
27.01.2020, 21:43

Теги

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