/ tmp 내부의 폴더가 정리되지 않도록하려면 어떻게합니까? 수동으로 다시 만들었습니다. 이제 / tmp

이 질문은 내 개발자 랩톱의 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.confmountall패키지의 일부이므로 해당 패키지의 모든 업데이트 및 제안 된 변경 사항이 되돌려집니다.

$ 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


답변