crontab을 쓰면 소켓통신이 이상합니다.

seungo78의 이미지

그냥 .sh파일을 실행시키면 정상적으로 동작하는데.
crontab에 등록시켜서 실행하면 소켓통신이 오동작합니다.

왜그런지..도저히 원인을 못찾겠네요..

PATH를 추가로 설정할 부분이 있는지..
이런경우 경험해 보신분들 부탁드립니다.

pynoos의 이미지

환경변수가 달라지는 것을 확인해보세요.
user id가 달라지는 것도 확인해보시고.
현재 디렉토리가 달라지는 것도 확인해보시고...

뭐가 더 있을까요..
^^
---
coolengineer.com

seungo의 이미지

간단한 소스는 다음과 같습니다.
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, 현재디렉토리가 달라지는 것은 어떻게 확인해 불수 있나요?

ktd2004의 이미지

그냥 실행할 때

# set

cron에서 실행하는 스크립트 앞부분에 위 명령어의 결과를 임시 파일로 저장하도록 하면,
환경변수 정보를 확인해 볼 수 있습니다.

seungo의 이미지

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은 정상적으로 됩니다.

seungo의 이미지

참고로 어플리케이션에서 ./파일명 은 잘 읽어옵니다.
현재 경로의 path는 잘 설정된것 같은데 소켓의 select 할때만 이상하네요..

ihavnoth의 이미지

이런 글을 여러개 올리셨군요 -.-

크론으로 프로세스 돌릴때

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(메모리)에 변화가 있었다.

없음

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.