cron을 사용할 때 매우 이상한 문제가 발생했습니다. 지금까지 나는 그것을 다음과 같이 정리했습니다.
다음과 같은 간단한 bash 스크립트를 만들었습니다 /home/user1/cron_dir/cron.sh
.
#!/bin/bash
echo "Success"
user1로서 다음 crontab을 만들었습니다.
*/1 * * * * sh /home/user1/cron_dir/cron.sh
그러면 예상대로 설치되고 실행됩니다(내 로컬 메일의 cron에서 "성공" 메시지를 받음). 그러나 user1 계정에서 로그아웃하고 cron 작업이 실행될 때까지 몇 분 정도 기다린 후 다시 로그인하여 로컬 메일을 확인하면 다음과 같은 메시지가 표시됩니다.
sh: 0: Can't open /home/user1/cron_dir/cron.sh
편집하다: garethTheRed 덕분에 문제를 깨달았습니다. 내 홈 디렉토리가 암호화되었습니다. 물론 로그인한 경우에만 디렉토리에 접근할 수 있습니다.
답변1
답변을 삽입하기 위해 질문을 편집하는 것은 잘못된 형식이기 때문에 이 질문에 답변하는 것입니다(실제로 선의로 답변한다면 자신의 질문에 답변하는 것만으로도 괜찮습니다).
비슷한 문제가 있었습니다. cron을 통해 시작된 작업은 처음 몇 번은 작동하는 것처럼 보였지만 실패했습니다. 이러한 증상은 모두 사용자의 홈 디렉터리와 그 안에 있는 파일에 액세스할 수 없기 때문에 발생합니다. 이전 Ubuntu 상자에서도 동일한 스크립트와 설정이 제대로 작동했습니다.
대답은 '예'입니다. Ubuntu 설치 중에 $HOME 디렉토리를 암호화하기로 선택한 경우 수동으로 시스템에 로그인하여 파일을 삭제하지 않는 한 cron 작업은 그 아래의 파일에 액세스할 수 없습니다. 삭제됩니다. 시스템은 암호가 해독되고 설치된 상태로 유지됩니다. 나는 이 선택이 좋은 생각처럼 들렸기 때문에 이에 동의했지만, 그것에 전념하지는 않았습니다.
제가 원하는 해결책은 홈 디렉토리를 암호화하지 않는 것입니다. 즉, 홈 디렉토리에서 암호화를 제거해야 합니다. 관련된 모든 항목을 폴더 밖으로 이동하고 제거한 다음 모두 다시 이동하는 신중한 프로세스인 것처럼 보이지만 이는 즐겁지 않습니다.
이를 위해 제가 따르는 기본 프로세스는 다음과 같습니다.참고: 실행하기 전에 매우 주의 깊게 모든 단계를 읽으십시오., 특히 마지막 항목은 ecryptfs가 제거되면 이전 암호화된 홈 폴더를 복원하는 것이 매우 어려울 것이라고 생각하기 때문입니다. 현재 수행 중인 작업이 확실하지 않은 경우 데이터 손실 위험이 매우 높으므로 이 작업을 시도하지 마십시오. 백업이 있고 쉽게 다시 설치할 수 있다는 것을 알았기 때문에 계속 진행했습니다.
fixer
adduser
다음 을 사용하여 새 사용자를 추가하십시오.sudo mkdir /home/chrisc.unencrypted
sudo를 사용하여 홈 디렉터리의 내용을 다음 폴더로 전송할 새 폴더를 만듭니다 .- .을 사용하여 내 홈 디렉토리의 내용을 암호화되지 않은 새 폴더에 복사합니다
rsync -aP /home/chrisc /home/chrisc.unencrypted
. 숨겨진 파일도 모두 이동되었는지 확인하세요(예: .bash_profile 등). - /home/chrisc.unencrypted/.ecryptfs 폴더 삭제
- 로그아웃(암호화된 /home/chrisc 폴더를 마운트 해제해야 하므로 재부팅할 수도 있음)
- 다시 로그인하세요
fixer
sudo su
루트로 실행- 내용이
/home/chrisc.unencrypted
올바른지 확인하세요. 다음 몇 단계를 수행하면 원래 홈 폴더를 볼 수 없으므로 이는 매우 중요합니다. - 이전(암호화된) 홈 디렉토리의 이름을 바꾸십시오
mv /home/chrisc /home/chrisc.old
. 폴더를 사용하는 것이 없는지 확인하려면 먼저 재부팅해야 할 수도 있습니다(그렇지 않으면 장치 사용 중 메시지가 표시되어 이름을 바꿀 수 없게 됩니다). - 암호화되지 않은 홈 폴더의 이름을 사용자의 기본 폴더로 바꿉니다.
mv /home/chrisc.unencrypted /home/chrisc
- ecryptfs 제거 도구를 사용하십시오
apt-get remove ecryptfs-utils libecryptfs0
. 이 작업을 수행하지 않고 chrisc로 로그인하면 빈 홈 디렉토리가 표시됩니다(마치 여전히 암호화된 홈 디렉토리를 마운트하고 암호화되지 않은 실제 홈 디렉토리를 숨기고 있는 것처럼). 이를 제거하고 암호화되지 않은 실제 /home/chrisc를 표시하려면 재부팅해야 했습니다. - 원래 사용자로 다시 로그인하여 확인하십시오.
ecryptfs에 대한 구성 폴더를 삭제하거나 "chrisc로 로그인하면 /home/chrisc/.Private에서 사용 가능한 ecryptfs 볼륨을 마운트하십시오"라는 사용자별 구성이 있을 수 있습니다. 그러면 아마도 ecryptfs를 제거할 필요가 없을 것입니다.
chrisc.old
새 홈 폴더에 올바른 콘텐츠가 포함되어 있지 않은 것 같으면 이동을 되돌려 암호화되지 않은 홈 폴더 뿐 chrisc
아니라 다시 이동하여 암호화된 홈 폴더를 복원할 수 있습니다 chrisc.unencrypted
. 그러나 이는 ecryptfs를 제거할 때까지만 작동합니다.