2012-03-20 4 views
0

작은 Scala 애플리케이션을 작성했습니다. 프로그램 특성 주자를 포함하여 하나의 소스 파일에 2 개의 클래스가 있습니다. 터미널에서 실행할 때 잘 작동합니다.cron을 통해 스칼라 프로그램을 실행하는 방법은 무엇입니까?

scalac update.scala // compiling 
scala update // run it 

이제는 cron 작업으로 실행하고 싶습니다. 이를 위해 나는 sudo는의 crontab -e 편집이 추가 :

*/2 * * * * scala /usr/bin/local/update 

를하고 스크립트 실행을했지만 아무것도 지금까지 무슨 일이 생긴 없습니다. 어떻게해야할지 모르겠다. 이것을 위해 jar 파일을 만들어야 하나? 수업 전에 수업에 추가해야합니까?

#!/bin/sh 
exec scala -savecompiled $0 [email protected] 
!# 

누구나이 경험이 있습니까? 미리 감사드립니다.

답변

3

나는 cron이 볼 수있는 $ PATH에 scala가 없다고 생각합니다.

는 쉘 세션에서 다음을 시도해보십시오

$ which scala 

어느해야한다 "/opt/scala/2.9.1/bin/scala"또는 뭔가 같은 출력 뭔가./usr/local, 임의의 수의 장소에있을 수 있습니다. java와 유닉스 파일 시스템은 실제로 잘 작동하지 않습니다.

그래서 지금 당신은 두 가지 옵션이 있습니다

  • 폴더를 넣어 어디 시스템 경로에 스칼라의 삶 (이것은 일반적으로 편집을/etc/프로파일을 포함 할 것이다,하지만 당신은 OS 그래서 내가 할 수있는 '를 지정하지 않는 t는
  • (쉽게) 그냥 호출하는 크론 항목을 변경) 확실히 말할 수/전체/경로 /보다는 그냥 "스칼라"
+0

저는 우분투를 사용하고 있습니다. 'scala'는/usr/bin/scala를 출력합니다. 전체 경로로 cron을 시도했지만 스크립트가 실행되지 않습니다. – user1243091

+0

콘솔에서'/ usr/bin/scala/usr/local/bin/update'를 실행하면 어떻게됩니까? –

+0

커서가 깜박이는데 아무 것도 일어나지 않습니다. CTRL + C를 눌러 터미널로 돌아 가야합니다. – user1243091

1

scala 명령은 기대 이상/스칼라 실행 가능한 컴파일의 이름 객체 또는 실행 대상으로 scala 스크립트 소스 (또는 실행 가능한 jar 파일)을 포함하는 파일.

당신이 update.scala object update extends App (없이 패키지 선언)에있는 경우 다음 시간 이후에 scalac update.scala (* class 파일의 무리를 생산해야하는) scala update 실행 옳은 일이다.

생성 된 클래스 파일이 현재 디렉토리에없는 경우 예를 들어 -classpath 옵션을 사용하여 scala에 파일을 찾을 위치를 알려야합니다. scala -classpath /usr/bin/local update, 클래스 파일이 실제로/usr/bin/local에있는 경우.

/usr/bin/local/update (이 정확한 이름) 파일에 스칼라 스크립트 소스 (클래스 또는 객체로 래핑되지 않은 스칼라 표현식 시퀀스)가 포함되어있는 경우 유용 할 수 있습니다.

관련 문제