如何让应用程序自动运行?

如何让应用程序自动运行?

我试图在用户登录时运行我的应用程序。所以我添加了一个脚本,~/.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.如果我这样做,myapp 将由 root 运行。但我不想以 root 身份运行它。我应该由任何用户运行。

因此,我正在构建一个 RPM 包。我想在 RPM 软件包安装程序运行时添加脚本。因为RPM包是root安装的,所以不知道.bash_profile该添加到哪个,所以只能添加到/etc/profile/etc/profile.d/

  • 我应该将其添加到哪个文件?
    • 如果文件是,如何在for~/bash_profile中添加脚本bash_profile任何用户通过?rootrpm
    • 如果文件是/etc/profile,任何用户如何可以运行myapp
    • 你能建议一个更简单的方法吗?

答案1

听起来cron可以解决您想要做的事情。

crontab 的一般格式看起来像这样,每列分别代表分钟、小时、月份中的某一天、月份和星期几。

30 * * * * /home/user/updates.sh

Cron 还支持一些预定义条目,例如@weekly@daily其中包括@reboot

您可以crontab在以想要运行脚本的用户身份登录后进行编辑crontab -e,也可以以 rootcrontab -u username -e身份编辑其他用户的crontab

打开编辑器后,添加:

@reboot /usr/bin/myapp > /dev/null 2>&1

下次重新启动机器时,/usr/bin/myapp将由您将其放入其 crontab 的用户运行。

答案2

软件包安装脚本接触主目录中的文件是绝对不允许的。您很可能会破坏用户的配置,并且它可能会也可能不会起作用(如果用户使用 zsh 或 tcsh 作为他的登录 shell 会怎样?),并且它仅适用于包发布时其主目录在附近的用户。安装。

每当用户登录时就运行应用程序是极其奇怪的。由每个用户选择是否要运行你的应用程序。

如果您需要在用户登录时执行代码,那么修改/etc/profile是最好的选择。如果您的发行版有一个目录/etc/profile.d,请将文件拖放到那里而不是修改/etc/profile。如果必须修改/etc/profile,请非常小心,不要破坏系统管理员的自定义。通常您要做的profile就是设置一个环境变量。

您声称“如果我这样做,我的应用程序将由 root 运行”。这是错误的:/etc/profile由正在登录的用户执行。

重申一下,您可能应该做的是告诉用户“如果您想运行我的应用程序,请运行命令myapp或从菜单中选择“我的应用程序”或单击”,仅此而已。请务必为 GUI 用户提供菜单条目。为了避免摆弄环境变量,请提供一个调用脚本来设置任何必要的环境变量。

相关内容