crontab에서는 명령이 실패하지만 터미널에서는 작동합니다.

crontab에서는 명령이 실패하지만 터미널에서는 작동합니다.

내가 확인했다이 질문crontab 실패에 관해.

이 명령을 실행하여 htop명령을 캡처하고 html 형식(사람이 읽을 수 있는 파일로 htop 출력):

/bin/echo q | /usr/bin/htop | /usr/bin/aha --black --line-fix > /tmp/htop.html

이 명령은 터미널에서 올바르게 작동하며 환경 변수에 의존하지 않습니다. 이 명령을 cronjob으로 추가하면 빈 HTML 파일이 생성됩니다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- This file was created with the aha Ansi HTML Adapter. http://ziz.delphigl.com/tool_aha.php -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xml+xhtml; charset=UTF-8" />
<title>stdin</title>
</head>
<body style="color:white; background-color:black">
<pre>
</pre>
</body>
</html>

를 통해 출력을 캡처할 수 없는 이유는 무엇입니까 cron?

답변1

htopTERM예를 들어 데이터를 출력하려면 변수를 설정 해야 하므로 cron 라인에 xterm이 변수를 설정하십시오 . 예:xterm

@hourly echo q|TERM=xterm htop|aha --black --line-fix >/tmp/htop.html

명령이 실행되는지 테스트하고 싶다면정말환경 변수에 의존하지 않습니다. 이로 인해 문제가 자주 발생합니다 cron. 연결한 질문을 참조하세요. env -i"빈 환경으로 시작"하는 데 사용합니다.

$ env -i htop
Error opening terminal: unknown.

diffcron및 터미널 환경 과 결합하면 명령에 필요한 변수를 테스트하는 좋은 방법입니다.htop 명령에 필요한 변수를 테스트하는 좋은 방법입니다. 사실은오직필요 TERM:

env -i TERM=xterm htop

관련 정보