如何在linux中创建静态程序或进程?

时间:2019-05-17 17:37:24

标签: linux bash memory-management process

就像c中某个函数的静态变量所提供的功能一样。 在bash脚本中多次调用程序时,必须将前一次调用的数据保留到下一次调用。 通常,当我们在bash中运行程序时,它会在完成后终止。

我想要的是程序运行时,它一定不能自行终止并保持运行,直到调用kill命令明确终止为止。 这样我们就可以继续调用要在平均时间内使用的程序。

2 个答案:

答案 0 :(得分:0)

您正在寻找类似这样的声音

$ 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)

答案 1 :(得分:0)

  

在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"

  1. 使用自我修改脚本
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"