losetup -f
유휴 루프 장치를 쿼리하는 초기화 스크립트를 생성하려고 합니다 . init 스크립트에는 일부 항목을 설정하기 위해 자유 루프 장치를 start()
쿼리하는 파일과 .losetup -f
stop()
내가 이해할 수 없는 문제는 출력을 losetup -f
영구 물질에 저장하여 사용자의 놀라움(환경 변수 덮어쓰기 등)을 방지하여 stop()
이 특정 초기화 스크립트가 호출될 때마다 할당된 루프 장치에 액세스할 수 있도록 하는 방법입니다. 에게 .
어떤 루프 장치를 지속적으로 할당해야 하는 이유는 루프 장치를 처리할 2~3개의 초기화 스크립트(초기화 스크립트당 최소 2개의 루프 장치)가 있고 각 초기화 스크립트가 자체적으로 추적해야 하기 때문입니다.
여러 출력을 losetup -f
파일에 할당하여 분리/사용해야 할 때 루프에서 다시 읽을 수 있도록 해야 합니까? 그렇다면 그러한 데이터의 표준 디렉토리는 무엇입니까?
답변1
의견을 바탕으로 솔루션을 만들었습니다.
start() {
loop=$(losetup -f)
echo "$loop" > /var/run/init-script-name.loop
#continue to use $loop as the reference to your loop device
}
stop() {
loop=$(cat /var/run/init-script-name.loop)
rm /var/run/init-script-name.loop
#continue to use $loop as the reference to this scripts loop device
}
이를 통해 각 초기화 스크립트는 나중에 할당된 장치를 가져와야 하는 경우 참조할 수 있는 파일에 루프 장치를 저장할 수 있습니다. 여러 장치가 필요한 경우 모든 장치를 파일(한 줄에 하나씩)에 표시하고 이를 사용하여 while read -r /path/to/file
반복할 수 있는 배열과 같은 구조를 생성할 수 있습니다.
답변2
어쩌면 이것이 도움이 될 것입니다.
변수 저장,
declare -p var_name another_var more_vars > path_to_init_file
검색,
source path_to_init_file
답변3
방금 이 훌륭하고 간단한 프로젝트(재작성된 포크)를 발견했습니다. 완벽해 보이네요.
https://github.com/imyller/kv-sh
- 작은 키-값 데이터베이스
- 구성 가능한 데이터베이스 디렉터리(기본값
~/.kv-sh
: ) - 함수를 가져와서 사용
$ . ./kv-sh
- 전체 데이터베이스 덤프/복원
- 보조 읽기 전용 기본 데이터베이스 지원
. ./kv-sh # import kv-sh functions (use default database directory; see
configuration environment variables for available options)
kvset <key> <value> # assign value to key
kvget <key> # get value of key
kvdel <key> # delete key
kvexists <key> # check if key exists
kvkeys {-l|-d|-a} # list all keys (-l local only, -d default only, -a all (default))
kvlist {-a} # list all key/value pairs (-a all keys, including default)
kvdump {-a} # database dump (-a all keys, including default)
kvimport # database import (overwrite)
kvrestore # database restore (clear and restore)
kvclear # clear database
기본 데이터베이스
kv-sh
보조 읽기 전용 기본 데이터베이스를 지원합니다. 활성화된 경우 로컬 값이 지정되지 않은 경우 데이터베이스의 기본 키-값 쌍을 반환합니다.
설정을 통해 기본 데이터베이스를 활성화합니다 DB_DEFAULTS_DIR
.
DB_DIR="/tmp/.kv" DB_DEFAULTS_DIR="/tmp/.kv-default" . ./kv-sh