추가 읽기

추가 읽기

여기에 있는 일부 게시물을 기반으로 재부팅 및 종료 시 임시 콘텐츠가 포함된 폴더를 정리하는 간단한 스크립트를 실행해 보았습니다.

지침과 추가 정보에 따라 다음 스크립트를 작성했습니다.

/etc/init.d/cleantmp

#!/bin/sh
### BEGIN INIT INFO
# Provides:          cleantmp
# Required-Start:
# Required-Stop:     $local_fs
# Default-Start:
# Default-Stop:      0 1 6
# Short-Description: clean temporary folders
# Description:
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin

echo "Clean up temporary folders"
rm -rf /home/user/tmp/*

그런 다음 실행 권한을 부여했습니다.

$ sudo chmod +x /etc/init.d/cleantmp
$ ls -l /etc/init.d/cleantmp 
-rwxr-xr-x 1 root root 329 Dec 19 12:50 /etc/init.d/cleantmp

그런 다음 rc를 업데이트합니다.

$ sudo update-rc.d cleantmp defaults
$ ls -l /etc/rc?.d/*cleantmp 
lrwxrwxrwx 1 root root 18 Dec 19 13:12 /etc/rc0.d/K01cleantmp -> ../init.d/cleantmp
lrwxrwxrwx 1 root root 18 Dec 19 13:12 /etc/rc1.d/K01cleantmp -> ../init.d/cleantmp
lrwxrwxrwx 1 root root 18 Dec 19 13:12 /etc/rc6.d/K01cleantmp -> ../init.d/cleantmp

여태까지는 그런대로 잘됐다. 그러나 종료하고 시작하거나 다시 시작한 후에도 임시 파일은 그대로 남아 있습니다. sudo파일을 사용하여 심볼릭 링크 중 하나를 직접 호출하면 올바르게 사라집니다.

여기에 문제가 있나요?


운영 체제: Linux 4.4.0-104-일반 #127-Ubuntu Ubuntu Gnome 16.04.3 LTS 64비트

답변1

세 가지 주요 오류가 있습니다.

  • rcUbuntu 16이 시스템 OS이고 실제로 그 위에 있었을 때 van Smoorenburg 스크립트를 작성했습니다.두번째rcvan Smoorenburg가 10여년 전에 사용한 이래로 init 시스템이 사용되었습니다. rcUbuntu Linux에서 새로운 작업을 하고 있다면 van Smoorenburg로 시작하지 마세요.
  • 당신은 Van Smulenberg의 rc각본을 썼습니다.진지하게,아니요init-d-script(5) 매뉴얼 페이지의 지침이나 예를 따르십시오. 우선, rc스크립트는 그러한 스크립트를 호출하는 다양한 하위 명령에 올바르게 응답하지 않으며 Debian/Ubuntu 표준 함수 라이브러리에 액세스할 수도 없습니다.
  • LSB 헤더가 잘못되었습니다.

원칙적으로 우분투 리눅스에서 10년 이상 된 것으로 시작해서 버리지 마세요.

  • 직접 clean-user-tmp.conf파일 을 작성 /etc/tmpfiles.d하거나
  • /etc/systemd/system/clean-user-tmp.service자신에게 다음과 같은 것을 써보세요

    [단위]
    문서=https://unix.stackexchange.com/a/411804/5132
    설명=삭제~사용자/tmp/
    [제공하다]
    사용자=사용자
    ;피해야 할 일반적인 실수:
    ;* 또는 ~가 확장될 것으로 예상
    ;명령의 절대 경로 이름을 사용하지 마십시오
    ; safe-rm이 설치되어 있지 않으면 /bin/rm을 교체하십시오.
    ExecStart=/usr/bin/rm -r -f -- ${HOME}/tmp/
    [설치하다]
    WantedBy=다중 사용자.대상
    활성화하고

    systemctl은 clean-user-tmp.service를 활성화합니다.
    , 또는
  • 직접 작성 /home/user/.local/share/systemd/user/clean-tmp.service하고 활성화하세요.

    systemctl --사용자가 clean-tmp.service를 활성화합니다.
    .

추가 읽기

관련 정보