bash 스크립트로 생성된 준단기 데이터를 저장하기에 가장 좋은 장소는 어디입니까?

bash 스크립트로 생성된 준단기 데이터를 저장하기에 가장 좋은 장소는 어디입니까?

고쳐 쓰다

더 나은 솔루션을 생각해냈습니다: 기본 디렉토리/var/tmp

생각해 보세요. https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

| /var/tmp | Temporary files to be preserved between reboots. |

이 위치는 데이터 세트를 /tmp에 부적합하게 만드는 유일한 조건, 즉 재부팅 후에도 살아남아야 한다는 점을 제외하면 실제로 /tmp와 같습니다.

가능한 모든 관점에서 해당 데이터 세트를 /var/tmp에 넣는 것은 다음과 같은 장점만 있습니다.

• 위치 설명과 잘 맞습니다.

• 배시 스크립트

mkdir /var/tmp/bash_script_x_logs

• bash 스크립트 x는 여기에 권한 상승, sudo 또는 루트 없이 매일 처음 처리되는 모든 파일에 대한 로그를 저장할 수 있습니다.

ls /var/tmp/bash_script_x_logs

bash_script_A
bash_script_B
bash_script_Y
bash_script_Z

• 이 장소는 모든 사람이 액세스할 수 있고 공유 가능하므로 처리된 bash 스크립트 Y에 대한 공동 작업이 가능합니다.

예를 들어, 하나의 호스트에 있거나 여러 호스트에 분산되어 있는 사용자 A, B, C가 있다고 가정합니다.

오전 8시, 사용자 C는 bash 스크립트 Y를 최초로 처리한 사람이고 bash 스크립트 X를 통해 상황을 분석하고 있습니다.

Bash 스크립트 X는 분석 bash 스크립트 Y의 첫 번째 실행에서 데이터 세트를 /var/tmp/bash_script_x_logs.

사용자는 오전 11시까지 파일 작업을 하여 작업을 완료할 수 있고 오전 8시에 시작할 때보다 오전 11시에 파일 작업이 15% 더 적게 필요하므로 더 효율적입니다.

저녁 10시에 사용자 A는 bash 스크립트 Y를 계속 처리하는 동시에 bash 스크립트 X의 진행 상황을 분석하고 행, 문자, 파일 크기 등을 분석합니다.

그러나 참고로 자체 시작 데이터 세트를 생성하여 바퀴를 재발명하는 대신 bash 스크립트 .

따라서 오후 11시에 bash 스크립트 X와 bash 스크립트 Y를 실행하는 사람에게 표시되는 비교는 오전 8시부터 오후 11시까지 하루 중 첫 번째 실행에서 진행 상황을 보여줍니다. 오후 10시부터 11시까지만 비교하는 것이 아니라 비교도 없습니다. 새로운 시작 데이터 세트를 설정하는 것뿐입니다.

다음 날 사용자 B는 bash 스크립트 Y 처리를 시작하고 오후 1시에 그날 처음 실행되는 bash 스크립트 X를 통해 진행 상황을 분석합니다. 이 값은 전날의 값을 덮어씁니다. 따라서 더 명확하게 말하면 데이터 세트의 유효 기간은 정확히 24시간이 아니라 자정까지입니다. 그 후에도 데이터 세트가 여전히 남아 있을 수 있으므로 다음 날에도 존재하지만 다음 날 bash 스크립트 X가 bash 스크립트 Y에 대해 다음에 실행될 때 더 이상 참조 값으로 사용되지 않습니다. 대신 bash 스크립트는 이전 데이터세트가 존재하지 않는 것처럼 동작합니다. 결론은 "아, bash 스크립트 Y에 대한 데이터세트는 오늘 저장되지 않았습니다! 따라서 남은 데이터세트가 있을 경우 변경하겠습니다. 어제, 더 일찍, 지난주처럼, 아니 3일 전에만 취재를 했을 텐데!”

/var/tmp/bash_script_x_logs/또는 추가 크론 작업을 통해 매월 평일 오후 11시 59분에 모든 작업을 완료할 수 있습니다. 하지만 제게 묻는다면 그것은 불필요하고 과부하가 걸린 일입니다.

좋아요...이거 정말 마음에 드네요.


저는 주어진 bash 스크립트 X의 줄 수, 문자 및 파일 크기를 계산하고 하루 중 첫 번째 실행 결과를 어딘가에 저장하는 작은 bash 스크립트 Y를 작업 중입니다.

Bash 스크립트를 사용할 때 예를 들어, "파일 크기: -12%"는 bash 스크립트 X가 그날 처음 실행된 이후 파일 크기가 12% 감소했음을 의미합니다.

따라서 첫 번째 실행 시 저장된 데이터는 수명이 매우 짧지만 재부팅 후에도 지속되어야 합니다. 유통기한은 1일이어야 합니다. 따라서 재부팅 또는 종료는아니요저장된 데이터의 수명은 끝나야 하지만 24시간이 지나면 다음에 bash 스크립트 Y가 실행될 때 bash 스크립트 X의 이전 데이터를 bash 스크립트 X의 새 데이터로 덮어써야 합니다.

Linux 파일 계층 구조 또는 FHS(파일 시스템 계층 구조 표준)에 따르면 이러한 특정 유형의 데이터를 저장하는 가장 좋은 위치는 무엇입니까?

위의 데이터는 반일시적입니다. 완전히 임시적이라면 재부팅하거나 종료할 때마다 실행 취소되고 덮어쓰게 됩니다. 이 경우 /tmp/가 스크립트에 의해 생성된 데이터에 적합한 위치라는 것은 의심의 여지가 없습니다. 하지만 다시 한 번 더 영구적인 시나리오는 재부팅 및 종료 후에도 살아남아야 하지만 시간 창은 24시간을 초과할 수 없다는 것입니다. Bash 스크립트에서 이런 종류의 데이터를 어디에 배치할 수 있나요? 나는 /var 또는 /usr/local/...을 기본 디렉토리로 가정하고 거기에 "bash script Y"라는 자체 하위 디렉토리를 넣습니다...

답변1

이것이 인간 사용자에게 속한 데이터라면 freedesktop에 따르면 $XDG_STATE_HOME기본적으로 올바른 위치는 입니다.$HOME/.local/stateXDG 사양.

마찬가지로 임시 데몬 데이터를 넣겠습니다 /usr/local/state. 하지만 이는 FHS와 호환되지 않습니다.설명하다이런 상태로 넣어야 합니다 /var/lib/<yourprogramsname>.

답변2

나는 그것을 두 부분으로 나누어서 할 것이다:

  1. 각 실행에 대해 고유한 이름의 새 임시 디렉터리(적절한 상위 디렉터리 아래)를 생성하는 핵심 bash 스크립트입니다.

  2. N시간보다 오래된 데이터를 정리하는 정리 스크립트(핵심 bash 스크립트 및 cron에 의해 호출될 수 있음)입니다.

하나의 소스 파일이 두 기능을 모두 수행하도록 호출 매개변수를 영리하게 사용하는 것이 최적화입니다.

관련 정보