![데비안에서 루트로 자동 실행되도록 스크립트를 적절하게 예약하는 방법](https://linux55.com/image/207364/%EB%8D%B0%EB%B9%84%EC%95%88%EC%97%90%EC%84%9C%20%EB%A3%A8%ED%8A%B8%EB%A1%9C%20%EC%9E%90%EB%8F%99%20%EC%8B%A4%ED%96%89%EB%90%98%EB%8F%84%EB%A1%9D%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%A0%81%EC%A0%88%ED%95%98%EA%B2%8C%20%EC%98%88%EC%95%BD%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
Debian에서 루트로 자동 실행되도록 스크립트(create_ap)를 예약해야 합니다. 이를 위해 cron(sudo crontab -e)을 사용했습니다. 작동하지만 작동하지 않습니다. 이는 일반 사용자가 sudo를 사용하여 스크립트를 실행할 때와 환경이 다르기 때문인 것 같습니다. 그렇다면 이 스크립트가 자동으로 실행되도록 적절하게 예약하려면 어떻게 해야 할까요?
답변1
필요한 환경 변수를 자동 실행 스크립트에 복사하기만 하면 됩니다. 해킹처럼 보이지만 작동합니다.
고쳐 쓰다. 시작 시 자동으로 스크립트를 루트로 실행해야 합니다. 일반 사용자가 sudo를 사용하여 수동으로 시작하면 제대로 작동합니다. 하지만 cron(@reboot 문)으로 시작하면 아무런 효과가 없습니다. 차이점을 찾기 위해 이러한 명령의 출력을 id, env, iwconfig 파일에 덤프하는 작은 스크립트를 만들었습니다. 2회 실행: 사용자가 sudo를 실행하고 cron이 예약합니다. 이 로그에서 cron이 잘린 환경으로 스크립트를 시작하고 PATH가 짧아 보이고 iwconfig도 찾을 수 없다는 사실을 발견했습니다. 이 문제를 해결하기 위해 텍스트 편집기를 사용하여 2개의 환경 변수(PATH 및 SHELL)를 원본 스크립트에 복사했습니다. 이제 스크립트는 상단에 2개의 추가 문자열만 있으면 동일하게 보입니다.
내보내기 PATH=full_path_from_env
SHELL=/bin/bash 내보내기
잘 작동합니다.