搜索

24.5. 使用 systemd 单元文件调度作业在下一次引导时运行

download PDF

cronanacronatbatch 实用程序允许在特定时间或系统工作负载达到特定水平时调度作业。也可以创建将在下一次系统引导期间运行的作业。这可以通过创建一个 systemd 单元文件来实现,它指定要运行的脚本及其依赖项。

将脚本配置为在下次引导时运行:

  1. 创建 systemd 单元文件,指定要在引导过程的哪个阶段运行 脚本。这个示例显示了一个单元文件,它带有合理的 Wants= 和 After= 依赖项集合:

    ~]# cat /etc/systemd/system/one-time.service
    [Unit]
    # The script needs to execute after:
    # network interfaces are configured
    Wants=network-online.target
    After=network-online.target
    # all remote filesystems (NFS/_netdev) are mounted
    After=remote-fs.target
    # name (DNS) and user resolution from remote databases (AD/LDAP) are available
    After=nss-user-lookup.target nss-lookup.target
    # the system clock has synchronized
    After=time-sync.target
    
    [Service]
    Type=oneshot
    ExecStart=/usr/local/bin/foobar.sh
    
    [Install]
    WantedBy=multi-user.target

    如果您使用这个示例:

  2. 如果您在执行脚本后希望 systemd 服务保持活跃状态,请将 RemainAfterExit=yes 行添加到 [Service] 部分:

    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/usr/local/bin/foobar.sh
  3. 重新载入 systemd守护进程:

    ~]# systemctl daemon-reload
  4. 启用 systemd 服务:

    ~]# systemctl enable one-time.service
  5. 创建要执行的脚本:

    ~]# cat /usr/local/bin/foobar.sh
    #!/bin/bash
    
    touch /root/test_file
  6. 如果您希望脚本只在下一次引导时运行,而不是在每次引导时都运行,请添加一行来禁用 systemd 单元:

    #!/bin/bash
    
    touch /root/test_file
    systemctl disable one-time.service
  7. 使脚本可执行:

    ~]# chmod +x /usr/local/bin/foobar.sh
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.