我的系统管理员在我的机器上设置了一堆 cron 作业。我想知道确切的时间安排。我怎样才能得到那个清单?
如果我cron错误地设置作业,它们似乎会默默地失败。我应该在哪里查找错误日志以了解出了什么问题?
似乎我可以sudo shutdown通过指定时间或分钟来关闭使用。
有没有办法指定关闭的日期时间?
我想在启动到系统后每 30 分钟执行一次脚本。我知道您可以使用 cron,但我不打算经常使用此功能,因此我想在 systemd 上尝试一下。
到目前为止,我只找到了允许执行一次的单调定时器(至少我是这么认为的)。如果我想从启动/系统启动每 30 分钟执行一次,那么foo.timer和foo@user.service会是什么样子?
foo@user.service
[Unit]
Description=run foo
Wants=foo.timer
[Service]
User=%I
Type=simple
ExecStart=/bin/bash /home/user/script.sh
Run Code Online (Sandbox Code Playgroud)
foo.timer
[Unit]
Description=run foo
[Timer]
where I am stuck... ???
Run Code Online (Sandbox Code Playgroud) 我一直在学习一些调度概念。目前我的理解如下。
nice的优先级值可以在-20到+20的范围内。较高的正值表示该进程具有较低的优先级。-如本答案here中所述。这主要是因为实时进程比非实时进程具有更高的优先级,并且niceness 值不适用于它们。chrt来查看进程的实时属性。 对于实时过程,chrt给出的输出为,
chrt -p 5
pid 5's current scheduling policy: SCHED_FIFO
pid 5's current scheduling priority: 99
Run Code Online (Sandbox Code Playgroud)
正如我们在进程5 中看到的,优先级是 99,这是最高的。此外,调度策略是SCHED_FIFO
现在,对于非实时过程,chrt给出的输出为,
chrt -p 22383
pid 22383's current scheduling policy: SCHED_OTHER
pid 22383's current scheduling priority: 0
Run Code Online (Sandbox Code Playgroud)
正如我们所见,进程22383的优先级为 0,调度策略为SCHED_OTHER。
问题
SCHED_OTHER非实时进程之外,我是否可以设置其他一些调度算法?从这里,我还看到我可以修改正在运行的进程的属性,
chrt -p prio pid …Run Code Online (Sandbox Code Playgroud)我问了之前的一个问题,试图找出将应用程序从 RHEL 5 迁移到 RHEL 6 时 CPU 使用率增加的原因。我为此所做的分析似乎表明它是由内核中的 CFS 引起的。我编写了一个测试应用程序来尝试验证是否是这种情况(原始测试应用程序已删除以适应大小限制,但在git repo 中仍然可用。
我在 RHEL 5 上使用以下命令编译它:
cc test_select_work.c -O2 -DSLEEP_TYPE=0 -Wall -Wextra -lm -lpthread -o test_select_work
Run Code Online (Sandbox Code Playgroud)
然后我调整了参数,直到戴尔 Precision m6500 上每次迭代的执行时间约为 1 毫秒。
我在 RHEL 5 上得到以下结果:
./test_select_work 1000 10000 300 4
time_per_iteration: min: 911.5 us avg: 913.7 us max: 917.1 us stddev: 2.4 us
./test_select_work 1000 10000 300 8
time_per_iteration: min: 1802.6 us avg: 1803.9 us max: 1809.1 us stddev: 2.1 us
./test_select_work 1000 …Run Code Online (Sandbox Code Playgroud) 我知道有很多方法可以自动关闭,但我担心自动开启。是否有命令或一小段软件可以在给定时间打开系统?
我想在特定时间启动和停止 systemd.service。据推测,我将使用 .timer 单元来启动作业,但是是否有内置的方法可以在特定持续时间后或特定时间停止作业,或者我是否必须创建第二个 .timer 单元来执行stop?
谢谢
该nice命令允许您调整程序的调度优先级(“niceness”)。在我使用过的所有类 Unix 系统上,niceness 由一系列整数指定,其中 -20 是最有利的调度优先级,0 是默认值,19 是最不利的。
将 0 作为默认的 niceness 已经足够直观了,但是为什么选择 -20 和 19 作为范围的端点呢?为什么不是 -128 和 127,它们完全适合有符号的 8 位字节?或者为什么不从 -100 到 100,这对小数点的人来说更直观,或者类似但更符合人体工程学,-99 到 99?-20 到 19 范围是任意选择的,还是nice与最初与之交互的调度程序的内部结构有某种关系?(我知道今天没有这种关系,至少对于 Linux,它的调度程序使用 0 到 139 范围内的优先级。但是,我对 -20 到 19 范围的历史原因很感兴趣。)
所有调度都是抢占式的:如果一个具有更高静态优先级的进程准备好运行,当前运行的进程将被抢占并返回到等待列表中等待它的静态优先级。
这会导致非常低的 nice 值 (+19) 在系统上有任何其他更高优先级负载时真正为进程提供很少的 CPU,并使高 nice 值 (-20) 将大部分 CPU 提供给需要它的应用程序
那么,更改 nice 值将如何影响程序的执行?它是否类似于 RT 调度(具有较高 nice 值的程序将中断具有较低 nice 值的程序)?
互联网上的所有信息都是如何使用nice,以及如何更改进程的优先级。没有链接解释具有不同优先级的进程究竟是如何工作的。我什至找不到源代码。