atd,batch //设置负载限制因子

atd,batch //设置负载限制因子

我正在使用 启动非交互式作业batch,并且我想增加负载限制因子以使用我的所有 8 个核心。我使用的是 Ubuntu 16.04 LTS。

据我了解,batch用于atd完成工作。当负载因子低于阈值(称为阈值)时,作业就会启动负载限制系数。据说我们可以使用选项manatd改变这个因素-l

我的问题:我该如何使用这个atd -l XX选项?例如,当我输入atd -l 7.2before时batch,它​​似乎没有改变任何东西。

到目前为止我发现了什么:

好像可以在 里介绍/etc/init.d/atd,但不知道在哪里。我从未更改过此类文件。

那么,如何更改batch命令使用的负载限制因子呢?

答案1

找到了解决办法:

  • 创建一个文件:/etc/init/atd.override
  • 添加一行exec atd -l 7.2
  • 然后sudo service atd restart

它与“Upstart init daemon”的工作方式有关。那里的解释:http://linux.die.net/man/5/init 如果文件/etc/init/atd.override已存在且包含以 开头的行exec,请编辑该行。

答案2

/lib/systemd/system/atd.service在 Ubuntu 16.04 / systemd 上编辑。

附加-l «load avg»到后ExecStart

$ cat /lib/systemd/system/atd.service 
[Unit]
Description=Deferred execution scheduler
Documentation=man:atd(8)

[Service]
ExecStart=/usr/sbin/atd -f -l 7.2
IgnoreSIGPIPE=false

[Install]
WantedBy=multi-user.targe

运行时您会看到一条消息systemctl status atd或 ( service atd status):

警告:磁盘上的 atd.service 已更改。运行“systemctl daemon-reload”来重新加载单元。

运行该命令可以消除警告,但要真正接受更改,需要通过systemctl restart atd(重新启动服务service atd restart)

答案3

这建立在韦斯利·B 的回答。如果使用 则适用systemctl。不是直接更新服务配置,而是覆盖可以为其定义。最好这样做,因为操作系统可以随时替换服务配置。这个答案是在 Ubuntu 21.10 上测试的。

  1. 运行sudo systemctl edit atd并插入:
[Service]
ExecStart=
ExecStart=/usr/sbin/atd -f -l 3.0 -b 5

上面,没有值的行ExecStart=是使旧值失效所必需的。在下一行中,根据需要设置-l和的值-b,参考其男人页。

这会将以上行写入/etc/systemd/system/atd.service.d/override.conf.如果添加此文件时没有添加systemctl edit,则sudo systemctl daemon-reload可能需要运行。

  1. 跑步sudo systemctl restart atd

  2. 验证状态:

systemctl status atd
ps aux | grep [a]td

这些应该显示服务和进程状态,两者都带有自定义参数。

答案4

我附近没有 Ubuntu 16.04 LTS,但在基于 Debian 的系统上 /etc/init.d/atd通常会这样说:

case "$1" in
  start)
        log_daemon_msg "Starting deferred execution scheduler" "atd"
        start_daemon -p $PIDFILE $DAEMON -l 7
        log_end_msg $?

请注意我添加-l 7部分的位置。然后您需要重新启动/etc/init.d/atd restart,并检查ps auxwww|grep atd是否被接受。

请注意,有时您会选择/etc/default/atd哪种更简单的方法(而且更好,因为您的更改不会在下次升级时默默地擦除)

相关内容