사용자가 로그인되어 있을 때 내 애플리케이션을 실행하려고 합니다. 그래서 다음과 같은 스크립트를 추가했습니다 ~/.bash_profile
.
# for Buluttdepo
/usr/bin/myapp > /dev/null 2>&1 &
export MYAPP_HOME=/opt/myapp
성공적으로 실행되지만 스크립트를 추가해야 합니까 .bash_profile
?
그렇지 않으면 /etc/profile
스크립트 파일을 /etc/profile.d/myapp_run.sh
. 하지만 루트로 실행하고 싶지 않습니다. 나는 어떤 사용자에 의해서든 실행되어야 합니다.
그래서 RPM 패키지를 만들고 있습니다. RPM 패키지 설치 프로그램이 실행 중일 때 스크립트를 추가하고 싶습니다. RPM 패키지는 루트로 설치되기 때문에 .bash_profile
어느 것에 추가해야 할지 모르겠어서 /etc/profile
or 에만 추가하면 됩니다 /etc/profile.d/
.
- 어떤 파일에 추가해야 하나요?
- 파일이 다음과 같은 경우
~/bash_profile
스크립트를 추가하는 방법bash_profile
모든 사용자통과하다root
?rpm
- 파일이 이면
/etc/profile
사용자가 어떻게 실행할 수 있습니까myapp
? - 더 쉬운 방법을 제안해 주실 수 있나요?
- 파일이 다음과 같은 경우
답변1
cron
하고 싶은 일이 해결될 것 같습니다 .
crontab의 일반적인 형식은 다음과 같습니다. 각 열은 분, 시간, 일, 월 및 요일을 나타냅니다.
30 * * * * /home/user/updates.sh
Cron은 또한 예 @weekly
를 들어 를 @daily
포함 하여 미리 정의된 일부 항목을 지원합니다 @reboot
.
crontab
스크립트를 실행하려는 사용자로 로그인하거나 다른 사용자의 경우 crontab -e
루트로 로그인한 동안 편집 할 수 있습니다 .crontab -u username -e
crontab
편집기를 연 상태에서 다음을 추가합니다.
@reboot /usr/bin/myapp > /dev/null 2>&1
다음에 머신이 다시 시작되면 머신 /usr/bin/myapp
을 넣은 crontab의 사용자가 머신을 실행합니다.
답변2
패키지 설치 스크립트가 홈 디렉터리의 파일을 다루는 것은 절대 허용되지 않습니다. 사용자의 구성이 깨질 가능성이 높으며 작동할 수도 있고 작동하지 않을 수도 있습니다(사용자가 로그인 셸로 zsh 또는 tcsh를 사용하는 경우 어떻게 될까요?). 패키지가 출시되었을 때 홈 디렉터리가 근처에 있었던 경우에만 작동합니다. . 설치하다.
사용자가 로그인할 때마다 애플리케이션이 실행되는 것은 매우 이상합니다. 애플리케이션을 실행할지 여부를 선택하는 것은 각 사용자의 몫입니다.
사용자가 로그인할 때 코드를 실행해야 한다면 수정이 /etc/profile
최선의 선택입니다. 배포판에 디렉터리가 있으면 /etc/profile.d
수정하는 대신 파일을 끌어다 놓습니다 /etc/profile
. 이를 수정해야 하는 경우 /etc/profile
시스템 관리자의 사용자 정의가 깨지지 않도록 매우 주의하십시오. 일반적으로 해야 할 일은 profile
환경 변수를 설정하는 것뿐입니다.
당신은 "내가 이렇게 하면 내 응용 프로그램이 루트로 실행될 것입니다"라고 주장합니다. 이것은 잘못된 것입니다: /etc/profile
로그인한 사용자에 의해 실행되었습니다.
다시 말하면, 아마도 해야 할 일은 사용자에게 "내 응용 프로그램을 실행하려면 명령을 실행 myapp
하거나 메뉴에서 내 응용 프로그램을 선택하거나 클릭하세요 "라고 말하는 것입니다. 그게 전부입니다. GUI 사용자를 위한 메뉴 항목을 제공하십시오. 환경 변수를 조작하지 않으려면 필요한 환경 변수를 설정하는 호출 스크립트를 제공하세요.