서버는 systemd 없이 Debian 7 Wheezy를 실행하고 있습니다.
그의 홈 디렉토리에 Perlbrew가 설치된 Debian 사용자가 있습니다. 사용자가 Mojolicious 애플리케이션을 실행 중입니다. 애플리케이션이 제대로 작동하려면 Perlbrew bashrc 파일을 로드해야 합니다. 현재 사용자는 로그인하여 hypnotoad app
데몬을 시작하는 애플리케이션을 실행합니다. 나는 애플리케이션과 그와 관련된 모든 것을 사용자의 홈 디렉토리에 격리하려고 노력하고 있으며 Perl 시스템을 엉망으로 만들고 싶지 않습니다. 그러나 응용 프로그램을 서비스로 실행하고 부팅 시 시작하는 등의 작업을 수행하고 싶지만 사용자로 서비스를 실행할 때 Perlbrew bashrc에서 리소스를 가져오는 방법을 잘 모르겠습니다.
간단히 말해서 제 질문이 제목에 요약되어 있지만 기본적으로 bashrc 파일에서 서비스의 소스 코드를 얻는 방법을 알고 싶습니다.
답변1
시도해 보셨나요 su <user> -l -c <cmd>
?
이러한 rc
스크립트는 루트 사용자(id=0)로 실행되므로 루트로서 시스템에 정의된 모든 사용자의 권한으로 프로세스를 생성할 수 있습니다.
예를 들어:
su root -l -c "ls /tmp"
어디:
- -c: 명령을 실행합니다.
- -l: 지정된 사용자로 로그인합니다.
답변2
물론, 시스템 시작 시 루트로 실행되는 스크립트로 사용자의 .bashrc를 가져오면 안 됩니다. 두 가지 제안:
서비스를 시작하는 스크립트를 작성합니다(mystart.sh라고 가정하겠습니다). 이 스크립트는 .bashrc를 가져온 다음 애플리케이션을 시작할 수 있습니다.
#!/usr/bin/bash
. .bashrc
hypnotoad app
시작 시 스크립트를 실행하려면 사용자의 crontab을 사용하는 것이 좋습니다. 사용자가 배치하도록 하세요.
@reboot mystart.sh
그들의 crontab에서. 이렇게 하면 사용자로 실행되며 나중에 비활성화하거나 교체할지 여부는 사용자에게 달려 있습니다.