shell script에 아래와 같이 했는데 아무런 실행이 되지 않는데요..
제가 잘못하고 있는것 같은데.. 조금만 자세히 알려주세요.ㅠㅠ
#!/bin/bash
source /home/test/.bashrc
source /home/test/.bash_profile
export PATH=/ set하면 나오는 것들 복사해서 넣었음
export HOME=/home/test
cd /home/test/bin
#set ./test
이렇게 하고하니까 실행파일이 아예 실행 안되던데요..
cron 등록하는데에는 위의 스크립트 실행될때 > 를 이용해서 log파일 저장되게 해놓았습니다.
참고로 어플리케이션에서 ./파일명 은 잘 읽어옵니다.
현재 경로의 path는 잘 설정된것 같은데 소켓의 select 할때만 이상하네요..
open은 정상적으로 됩니다.
환경변수가 달라지는
환경변수가 달라지는 것을 확인해보세요.
user id가 달라지는 것도 확인해보시고.
현재 디렉토리가 달라지는 것도 확인해보시고...
뭐가 더 있을까요..
^^
---
coolengineer.com
---
http://coolengineer.com
간단한 소스는
간단한 소스는 다음과 같습니다.
fd = open("/home/test/test_fifo", O_RDWR);
fd_set rfds;
struct timeval tv;
FD_ZERO(&rfds);
FD_SET(0, &rfds);
FD_SET(rfd, &rfds);
tv.tv_sec = 1; // interval : 1 sec
tv.tv_usec = 0;
iReturn = select(fd+1, &rfds, NULL, NULL, &tv);
여기서 test_fifo 에 아무짓도 해주지 않았는데.. 참고로 test_fifo는 mkfifo로 만든 pipe입니다.
계속 iReturn이 1로 나옵니다.
그냥 돌리면 0으로 정상적으로 나오는데... crontab으로 스케줄을 걸어놓으면 자꾸 1이 나오고
걸리지 말아야 할 if(FD_ISSET(0, &rfds)){} 여기에 걸립니다.
도저히 이해가 안되네요.. crontab으로 한다고 어떻게 이런일이...
환경변수나, user_id, 현재디렉토리가 달라지는 것은 어떻게 확인해 불수 있나요?
그냥 실행할 때 #
그냥 실행할 때
cron에서 실행하는 스크립트 앞부분에 위 명령어의 결과를 임시 파일로 저장하도록 하면,
환경변수 정보를 확인해 볼 수 있습니다.
shell script에 아래와
shell script에 아래와 같이 했는데 아무런 실행이 되지 않는데요..
제가 잘못하고 있는것 같은데.. 조금만 자세히 알려주세요.ㅠㅠ
#!/bin/bash
source /home/test/.bashrc
source /home/test/.bash_profile
export PATH=/ set하면 나오는 것들 복사해서 넣었음
export HOME=/home/test
cd /home/test/bin
#set ./test
이렇게 하고하니까 실행파일이 아예 실행 안되던데요..
cron 등록하는데에는 위의 스크립트 실행될때 > 를 이용해서 log파일 저장되게 해놓았습니다.
참고로 어플리케이션에서 ./파일명 은 잘 읽어옵니다.
현재 경로의 path는 잘 설정된것 같은데 소켓의 select 할때만 이상하네요..
open은 정상적으로 됩니다.
참고로
참고로 어플리케이션에서 ./파일명 은 잘 읽어옵니다.
현재 경로의 path는 잘 설정된것 같은데 소켓의 select 할때만 이상하네요..
.......
이런 글을 여러개 올리셨군요 -.-
크론으로 프로세스 돌릴때
fdtable
0 -----------open("/dev/null")
1 -----------open("/dev/null")
2 -----------open("/dev/null")
3 -----------tfd
이런 상태에서
0번과 3번을 FD_SET하셨고
0번에서 변화가 있고(select 코드 확인필요)
3번은 없었습니다.
select에서 1개 검출됩니다.
쉘에서 파일 실행시는
fdtable
0----------------stdin
1----------------stdout
2----------------stderr
3----------------tfd
0번 3번 둘다 변화 없어
select에서 검출 안됩니다.
쉘에서 /dev/null open할때
fdtable
0----------------stdin
1----------------stdout
2----------------stderr
3----------------크론데몬의 프로세스처럼
(/dev/null open의 반환 fd)
체크해보면 3번 검출됩니다.
크론에서의 상황과 같습니다...
select에서 1개 검출됩니다.
두경우 모두...(크론과 마지막 예)
open("/dev/null")의 반환 fd는 select에서 검출되고있습니다.
짐작1) select의 자체 코드에서 /dev/null장치일경우 검출로 반환한다.
짐작2) 실제로 /dev/null(메모리)에 변화가 있었다.
없음
댓글 달기