自动运行的脚本(位置)列表以及何时运行?

自动运行的脚本(位置)列表以及何时运行?

有谁知道(资源列表)从我启动计算机直到再次关闭期间自动运行哪些脚本以及何时运行。

我知道有几个地方可以添加脚本以自动运行,但我一直无法找出或多或少完整的列表。

例如,我知道这些:

  • ~/.profile登录时执行
  • 我可以用来crontab -e添加将在特定时间和/或日期触发的脚本

但我不知道将脚本放在哪里以便它们被执行

  • 启动后,X 初始化之前
  • 在 X(或其他图形 shell)初始化之后,但在任何人登录之前
  • 登录 X 会话后
  • 快速用户切换之前/之后
  • 在注销 X 会话之前
  • 在 X shell 上关闭之前
  • X 关闭后、系统停止前
  • 通过 tty-1..6 登录后/注销前
  • 通过 SSH 登录后/注销前

有这样的清单吗?如果没有的话,我们可以在这里组装一个吗?

答案1

对于 Ubuntu Linux,我们的解决方案如下:

  1. 对于启动后、X 初始化之前:Ubuntu 从 GDM(使用 ubuntu-desktop 的用户)或 KDM(使用 kubuntu-desktop 的用户)启动 X-Windows

    要在 GDM/KDM 之前运行脚本,您必须编写自己的 upstart 脚本。为此,您可以阅读新贵食谱

  2. 用户切换后:您必须将脚本添加到~/.bashrc文件中。

  3. 通过tty登录后:您必须将脚本添加到~/.bash_profile文件中。

  4. 使用 ssh 登录后但不使用 tty 本地登录时:在这种情况下,您还必须在同一文件中添加脚本~/.bash_profile,但在这种情况下,测试环境变量是否存在SSH_CONNECTION,并且仅在发现它存在时才运行命令。

  5. 通过 tty 注销之前:您必须将脚本添加到~/.bash_logout文件中。

  6. 通过 ssh 注销之前:您必须在~/.bash_logout文件中添加脚本,但在这种情况下,还要测试SSH_CONNECTION环境变量是否存在,并且仅在发现它存在时才运行命令。在文件中,您必须添加行

    if [[ -n $SSH_CONNECTION ]]

答案2

如果您对 Linux 内置任务感兴趣,您还可以参考 Linux 运行级别,它是实现 Unix System V 风格初始化的操作模式。

  • 0 停止 关闭系统。
  • 1 单用户模式 ​​用于管理任务的模式。
  • 2 多用户模式 ​​不配置网络接口,也不导出网络服务。
  • 3 带网络的多用户模式 ​​正常启动系统。
  • 4 未使用/用户可定​​义 用于特殊目的。
  • 5 使用适当的显示管理器正常启动系统。 (使用 GUI)作为运行级别 3 + 显示管理器。
  • 6 重新启动 重新启动系统。

例如,您可以在下面看到 Linux 进程及其运行级别设置的部分列表:

chkconfig --list
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off
atd             0:off   1:off   2:off   3:off   4:off   5:off   6:off
auditd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
autofs          0:off   1:off   2:on    3:on    4:on    5:on    6:off
avahi-daemon    0:off   1:off   2:off   3:off   4:off   5:off   6:off
avahi-dnsconfd  0:off   1:off   2:off   3:off   4:off   5:off   6:off
.
.
.

相关内容