사용자 로그인 시 별도의 셸 상호 작용 유틸리티(예: iTerm2)에서 명령 파일(예: *.sh)을 어떻게 실행합니까?

사용자 로그인 시 별도의 셸 상호 작용 유틸리티(예: iTerm2)에서 명령 파일(예: *.sh)을 어떻게 실행합니까?

iTerm2는 훌륭한 유틸리티이며 명령줄과의 상호 작용을 훨씬 쉽게 만들어줍니다. 매일 실행하는 업데이트 명령이 많이 있는데, 이러한 명령이 사용자 로그인 시 실행될 수 있다면 정말 좋겠다고 생각했습니다. 사용자 로그인 이벤트에서 스크립트를 실행하려면 디렉터리와 동일한 이름을 갖는 실행하려는 스크립트가 포함된 /System/Library/StartupItems에 디렉터리를 만들어야 한다는 것을 알고 있습니다(예: update_sys/update_sys.sys). 쉿). 이 이후에 발생하는 두 가지 주요 문제는 1) 명령이 실행될 때 출력을 표시하는 터미널 창이 없다는 것과 2) iTerm2(또는 다른 유틸리티)를 기본 터미널 유틸리티로 지정하는 방법을 모른다는 것입니다. 스크립트를 실행합니다. iTerm2를 기본 터미널 유틸리티로 설정했지만 실행된 일부 스크립트는 여전히 터미널에서 실행됩니다.

어떤 도움이라도 대단히 감사하겠습니다!

(사용자 로그인 이벤트에 명령을 추가하는 방법에 대한 내 개념이 올바르지 않거나 더 쉬운 방법이 있는 경우 알려주시기 바랍니다!)

답변1

나는 iTerm(또는 Mac OS)을 사용한 적이 없습니다. 그러나 iTerm은 터미널 에뮬레이터이기 때문에 작업을 예약하는 데는 적합하지 않을 수 있습니다. *nixiod 시스템에서 로그인 스크립트는 일반적으로 ~/.profile, 및 같은 파일과 및 /etc/profile같은 쉘 특정 파일에서 실행됩니다 . 쉘의 매뉴얼 페이지에서 이에 대해 읽을 수 있습니다(예:~/.bashrc/etc/bash.bashrcman 1 bash).

답변2

iTerm을 사용하면 해당 스크립트를 대화형으로 실행할 수 있으며 대화형 세션이 결과를 볼 수 있는 화면으로 출력을 보낼 수 있습니다.

많은 프로그램을 백그라운드 프로세스로 실행할 수도 있습니다.

출력을 보는 가장 좋은 방법은 일반적으로 로그에 수동으로 추가하는 것입니다. 필요한 경우 echo 문을 사용하여 실행 중인 명령과 위치를 표시합니다. 내장 명령에서 나오는 출력 스트림의 경우.

아마도 당신이 원하는 것이 여기에 자세히 설명되어 있다고 생각합니다.https://unix.stackexchange.com/questions/74520/can-i-redirect-output-to-a-log-file-and-Background-a-process-at-the-same-time

즉, some_cmd > some_file 2>&1 &표준 출력을 로그 파일로 리디렉션합니다.

관련 정보