이 질문은 내 개발자 랩톱의 Ubuntu 14.10에 관한 것입니다.
/tmp
거기에 임시 물건을 넣는 데 응용 프로그램에서 사용 하는 폴더 가 있습니다. 이 응용 프로그램은 일반적으로 내 homedir에 임시 폴더를 만들고 나중에 삭제합니다. 어떤 이유로 homedir이 암호화되면 작동하지 않습니다. 대신에 나는 /tmp/foo
홈 디렉 내부에 심볼릭 링크를 만들었습니다 . 내 응용 프로그램에서 거기에 쓰고 임시 하위 폴더로 만들 수 있습니다.
이제 /tmp/foo
컴퓨터를 재부팅 할 때마다 삭제됩니다. 지금까지는 재부팅 후 폴더를 수동으로 다시 만들었습니다. 이제 / tmp 디렉토리는 어떻게 정리됩니까? 에서 배웠 습니다. 그렇게하는 직업이 있다는 것입니다.
나는 보았지만 /etc/init/mounted-tmp.conf
내 bashfu와 특히 findfu는 내가 원하는 것을하기에 충분하지 않습니다. 해당 파일에서 발췌 한 내용은 다음과 같습니다.
EXCEPT='! -name . ! ( -path ./lost+found -uid 0 ) ! ( -path ./quota.user -uid 0 ) ! ( -path ./aquota.user -uid 0 ) ! ( -path ./quota.group -uid 0 ) ! ( -path ./aquota.group -uid 0 ) ! ( -path ./.journal -uid 0 ) ! ( -path ./.clean -uid 0 ) ! ( -path "./...security*" -uid 0 )' # Remove all old files, then all empty directories find . -depth -xdev $TEXPR $EXCEPT ! -type d -delete find . -depth -xdev $DEXPR $EXCEPT -type d -empty -delete
내가하고 싶은 것은 내부의 모든 것을 삭제 /tmp/foo
하지만 /tmp/foo
자체 는 삭제 하지 않는 조건을 추가하는 것입니다. 어떻게해야합니까?
답변
/etc/init/mounted-tmp.conf
mountall
패키지의 일부이므로 해당 패키지의 모든 업데이트 및 제안 된 변경 사항이 되돌려집니다.
$ sudo dpkg -S /etc/init/mounted-tmp.conf
mountall: /etc/init/mounted-tmp.conf
대신, 파일 시스템 계층 표준 (FHS)에 따라 ;
/ tmp 관련 :
프로그램은 / tmp의 파일 또는 디렉토리가 프로그램 호출간에 보존된다고 가정해서는 안됩니다.
에 관해서 는 / var / tmp를 :
/ var / tmp 디렉토리는 시스템 재부팅 사이에 보존되는 임시 파일이나 디렉토리가 필요한 프로그램에 사용 가능합니다. 따라서 / var / tmp에 저장된 데이터는 / tmp의 데이터보다 영구적입니다.
따라서 기호 링크를 /var/tmp
대신 사용하도록 변경해야합니다 /tmp
.
답변
귀하의 질문에 대한 대답은 엄격 /var/tmp
하지 않지만 재부팅을 통해 정리되지 않으므로 더 적합한 위치를 찾을 수 있습니다. 짧은 시간 후에 자동으로 버리지 않아야하는 임시 파일 용으로 설계되었습니다.
그러나 종종 내가하는 일은 집에서 원하지 않는 임의의 것을 저장하기 위해 / opt 아래에 폴더를 만드는 것입니다. 그것은 주 운영 체제가 통제하지 않는 것들을 놓기에 적합한 장소입니다.
답변
이렇게 :
EXCEPT='! -name .
...
! ( -path "./foo" )'
# Remove all old files, then all empty directories
...
find /tmp/foo/* -depth -xdev $TEXPR -delete
예:
$ cd /tmp/foo/
$ mkdir 1 2 3
$ touch 3 4 5
$ find /tmp/foo/* -depth -xdev $TEXPR -delete
$ ls /tmp/foo/
$
사용자 aap에 동의합니다. tmp 파일 인 경우 디렉토리를 다시 작성하여 사용 된 소프트웨어에서이를 처리하거나 제거되지 않은 tmp 파일이 아닌 경우 다른 디렉토리를 사용해야합니다.
답변
미래 가치를 가진 파일을 가지고 / tmp 디렉토리에 쓰는 것이 좋지 않습니다 (다른 사람들이 제안한대로 / var / tmp가 더 나은 곳입니다). 즉, 당신은 chattr에서 촬영을 원할 수도 있습니다. 응용 프로그램을 종료 한 후 종료하기 전에 실행해야합니다. 이 작업으로 인해 해당 디렉토리에 아무 것도 쓰지 못하게됩니다 .
/tmp/foo/ddmmyy/.001_immute_me chattr + i /tmp/foo/ddmmyy/.001_immute_me를 터치합니다
답변
이것을 실행하십시오 :
echo "if [ ! -e /etc/foo/ ]; then mkdir /etc/foo/; fi; rm -rf /etc/foo/*" > /bin/foodel; sudo chmod 755 /bin/foodel
그런 다음 이것을 / etc / inittab에 추가 하십시오. 여기를보십시오 : inittab 파일은 어디에 있습니까? :
foo:2345:boot:/bin/foodel
부팅시 / etc / foo가 없으면 부팅 한 다음 비 웁니다.
이것은 bash 로그인에서 동일하게 수행됩니다.
echo "/bin/foodel" >> ~/.bashrc