不同如何在启动时运行脚本

我已经阅读了有关how to run script at startup各种问题how to run script at startup但我不太确定它们之间的区别是什么,以及在没有GUI的情况下实际执行它的方法是什么。

  • /etc/rc.local
  • 使用@reboot cron作业
  • ~/.profile
  • /.bash_profile
  • /.bash_login

我需要在启动时运行的示例

  • apt-get update
  • 设置一些权限
  • 设置显示亮度
  • 打开numlock
  • 设置触摸板
  • 运行一些应用程序
  • 以root身份运行一些脚本(即使主脚本已作为root执行,我应该用sudo调用它们吗?)
  • 运行一些没有root的脚本

如果只有一个脚本可以处理一个文件中的所有这些内容,那就太好了。 怎么做得好?

与运行脚本相比, ~/.profile~/.profile/.bash_profile/.bash_login更适合定义环境变量和设置环境。 我不推荐这些。

/etc/rc.local可用/etc/rc.local ,但请记住它将在GUI启动之前启动。 除非是仅用于向GUI发送通知的脚本。 请注意,您需要从/etc/rc.local以格式/full/path/to/script &调用脚本( &以避免阻止您执行的其他脚本)。 您还需要在脚本本身或/etc/rc.local export DISPLAY=:0变量。 需要GUI的应用程序需要存在此变量。 cron job using @rebootcron job using @reboot

如果要在GUI登录时运行脚本,正确的方法是为~/.config/autostart/文件夹中的每个脚本创建.desktop文件。 您可以手动执行此操作,也可以使用与您完全相同的启动应用程序应用程序。 只需打开Unity Dash并输入“Startup Applications”

您的示例概述

  • apt-get update不需要GUI,只需要网络。 /etc/rc.local适合这个。
  • set some permissions ,这也不需要GUI,只需使用/etc/rc.local
  • set display brightness也不需要GUI,但可能需要root权限。 如果要在登录前更改它,则需要写入特殊文件。 请参阅我关于这个主题的其他post
  • turn numlock on也可能不需要GUI
  • 根据您的方法setup touchpad ,可能需要或可能不需要GUI
  • 如果它们是GUI应用程序,则run some apps程序,它们需要从我上面描述的启动应用程序启动。
  • run some scripts as root你可以使用/etc/rc.localcron 。 由于许多原因,以root身份运行GUI应用程序是个坏主意,所以请避免这种情况。
  • run some scripts without root使用Startup Applications方法。