운영팀은 애플리케이션이 /srv/appdata 에 쌓는 로그를 매일 한 번 묶어 보관 디렉터리로 내리는 자체 도구를 쓰고 있는데, 지금까지는 담당자가 매번 손으로 tar 를 실행해 실수가 잦았습니다. 인자 검증과 종료코드를 갖춘 셸 스크립트를 공용 도구 디렉터리에 배포하고, 모든 사용자가 경로 없이 호출할 수 있게 전역 셸 환경을 손본 뒤, 부팅 시 자동 실행할 systemd 유닛 파일까지 작성하세요.
컨테이너에서는 systemd 가 PID 1 이 아니므로 서비스를 실제로 기동·활성화할 필요는 없고 유닛 파일의 내용만 검사합니다. 채점기는 스크립트를 /srv/appdata 가 아닌 임시 디렉터리로도 실행하므로 경로나 대상 파일 목록을 스크립트에 하드코딩하면 안 됩니다. 종료코드와 표준에러 출력 여부는 그대로 검사합니다.
1. /opt/opstools/bin/logpack 에 실행 가능한 bash 스크립트를 만드세요. 인자를 하나도 받지 못하면 사용법 안내를 표준에러로 출력하고 종료코드 2로, 인자로 받은 경로가 디렉터리가 아니면 종료코드 3으로 끝내야 하며, 정상 처리 시 종료코드는 0이어야 합니다.
2. 정상 실행 시 이 스크립트는 인자로 받은 디렉터리 바로 아래의 .log 파일만 담은 gzip 압축 tar 아카이브를 /var/backups/ 아래에 '그 디렉터리 이름.tar.gz' 로 만들어야 합니다(다른 확장자 파일은 포함되면 안 되며, 디렉터리 이름은 스크립트 안에 고정하지 말고 인자에서 얻어야 합니다).
3. 새로 로그인하는 모든 사용자의 셸에서 /opt/opstools/bin 이 PATH 에 포함되도록 시스템 전역 셸 초기화 설정을 추가하세요(특정 사용자 홈 디렉터리의 개인 설정 파일 수정은 인정되지 않습니다).
4. /etc/systemd/system/logpack.service 유닛 파일을 작성하세요. 이 서비스는 데몬으로 상주하지 않고 한 번 실행된 뒤 종료되는 형식이어야 하고, 실행 명령은 위 스크립트에 /srv/appdata 를 인자로 준 것이어야 하며, 부팅 시 기본 다중 사용자 실행 환경에서 함께 시작되도록 설치 섹션을 갖춰야 합니다.