Как создать статическую программу или процесс в Linux? - PullRequest
0 голосов
/ 17 мая 2019

Так же, как функциональность, предоставляемая статической переменной функции в c.при многократном вызове программы в bash-скрипте данные предыдущего вызова должны быть сохранены до следующего вызова.Обычно, когда мы запускаем программу в bash, она завершается после ее завершения.

Я хочу, чтобы при запуске программы она не завершалась сама и продолжала работать до тех пор, пока не будет вызвана команда kill для явного завершения.,так что мы можем продолжать вызывать программу, которая будет использоваться в это время.

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

при многократном вызове программы в bash-скрипте данные предыдущего вызова должны быть сохранены до следующего вызова

Это решения, которые я мог бы придумать

  1. Используйте временный файл для хранения значения.
static_var_file=/tmp/static_var
# or use /usr/tmp/static_var to save it between reboots

# load
static_var=$([ -f "$static_var_file ] && cat "$static_var_file" || echo 0)

# the script here
static_var=$((static_var+1))

# save
echo "$static_var" > "$static_var_file"

Использовать самоизменяющийся скрипт
static_var=0  # MARK

# the script here
static_var=$((static_var+1))

# self modify ourselves to store new value
sed '/^static_var=.* # MARK$/s/.*/static_var="'"$static_var"'" # MARK/' "$0"

0 голосов
/ 17 мая 2019

Похоже, что-то вроде этого - то, что вы ищете:

$ cat tst.sh
#!/bin/env bash

trap 'echo "No - go away!" >&2' SIGINT
while :; do
    printf '.'
    sleep 5
done

$ ./tst.sh &
[1] 1309
$ ..
$ kill -SIGINT 1309
$ No - go away!
..
$ kill -9 1309
$
[1]+  Killed                  ./tst.sh

Я использую ловушку только для того, чтобы показать, что процесс запущен и с ним можно взаимодействовать, пока вы его не уничтожите (с -9 в данном случае)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...