nas4daul에서 특정 프로그램(스크립트)를 주기적으로 자동 실행하기 위한 방법을 설명합니다.
아래 경로에 root 사용자의 crontab 파일이 존재하는데요. 이 파일을 수정해봐야 리부팅하면 초기화됩니다.
/var/spool/cron/crontabs/root
아래 경로에 설정을 추가해주고 리부팅하면 자동으로 root 사용자의 crontab에 등록됩니다.(andantero님 알려주셔서 고맙습니다^^)
/etc/property/Cron
기존에 있는 파일의 내용을 참고해서 새로운 파일을 하나 생성해주면 됩니다.
참고로 전 Init.set 이라는 이름으로 아래 내용의 파일을 하나 생성했습니다.
1 2 3 4 5 6 7 8 9 |
name=Init min=* hour=* mday=* month=* wday=* command=/mnt/HDD1/rc.local |
그리고 command에 설정된 스크립트에 실행 권한을 줍니다.
1 2 3 |
chmod 755 /mnt/HDD1/rc.local |
아래 명령으로 추가된 설정이 저장되도록 합니다 (관리자 페이지에서 재시작 명령을 내리면 아래 명령은 내리지 않아도 됩니다).
1 2 3 |
saveconf |
리부팅 후 확인해보니 root 사용자의 크론탭에 잘 등록되었으며 실행도 잘 됩니다.
1 2 3 4 5 |
localhost> cat /var/spool/cron/crontabs/root * * * * * /mnt/HDD1/rc.local 40 13 * * * /sbin/hwclock -w |
good。。NAS에서 소프트웨어를 컴파일 할 수 있습니까 ??
안녕하세요.
C 소스 같은 경우 가능할 것 같습니다.
Entware(https://isulnara.com/wp/archives/1307) 또는 chroot(https://isulnara.com/wp/archives/1320)를 설치해서 컴파일러를 설치할 수 있습니다. gcc 패키지가 존재하네요.
또는 나스에서 직접 컴파일 하지않고 PC에서 크로스 컴파일해도 됩니다.
회사에서 go로 개발한 프로그램 하나를 arm7용으로 크로스 컴파일해서 nas4dual에 올려서 구동해보니 잘 동작하네요.
https://isulnara.com/wp/archives/2467
좋은 정보 감사합니다^^
이 방법을 이용하면 이전의 BubbleUPNPServer 편법은 안써도 되겠네요.
안그래도 사용 안하는 놈이었는데 미련없이 보낼수 있을거 같습니다.
참고로 저는 cron 설정으로 매 분마다 실행되지 않도록 리부팅 후 딱 한 번만 동작시키기 위해서 /mnt/HDD1/rc.local 파일을 아래처럼 작성했습니다.
#!/bin/sh
FLAG=/tmp/init.set
if [ ! -f $FLAG ]; then
ln -sf /mnt/HDD1/@entware-ng/opt /opt
/opt/etc/init.d/rc.unslung start &
touch $FLAG
fi
감사합니다. ^^
고맙습니다^^
참고로 crontab 파일과 달리 min, hour 등에는 3,15와 같이 여러개 숫자를 지정할 수 없습니다. 지정 자체는 가능하지만 실제 crontab 생성시 3,15* 와 같이 생성되어 정상 동작하지 않습니다.
특정 시간 간격 동작은 시간별로 set 파일 분리 혹은 */3 와 같이 횟수 지정해야 정상 동작합니다.
몰랐던 부분이네요. 유용한 정보 고맙습니다^^
윈도우에서 작성 후 리눅스로 보낼 경우 줄 끝에 “^M”이라는 것이 보이는 문제가 있으니
DOS -> UNIX로 변환 필요하겠습니다.
putty에서 CTRL + V + M 입력이 안 되기 때문에
dos2unix라는 툴을 설치해서 활용하면 쉽게 변환할 수 있습니다.
dos2unix 설치 후 아래 명령을 내리면 해당 파일에 있는 “^M”이 모두 제거됩니다.
dos2unix 파일명
localhost> ls -l
-rwxr-xr-x 1 root root 282 Dec 27 21:29 rc.local.org
-rwxr-xr-x 1 root users 466 Jan 3 15:33 rc.local
localhost> rc.local
-ash: rc.local: not found
localhost>
혹시나 싶어서 문의합니다.
rc.local을 실행하면 저렇게 실행이 안 되는 데 원인을 아실까요?
같은 디렉토리에 있는 파일은 아래처럼 ./를 앞에 붙여야 됩니다.
./rc.local