标签: scheduling

防止重复运行的 cron 作业

我已经安排了一个 cron 作业每分钟运行一次,但有时脚本需要超过一分钟才能完成,我不希望这些作业开始“堆积”。我猜这是一个并发问题 - 即脚本执行需要相互排斥。

为了解决这个问题,我让脚本查找特定文件(“ lockfile.txt ”)的存在touch,如果存在则退出,如果不存在则退出。但这是一个非常糟糕的信号量!是否有我应该知道的最佳实践?我应该写一个守护进程吗?

scheduling cron

116
推荐指数
4
解决办法
7万
查看次数

计算 Docker 容器中允许的 CPU 数量

我的具体情况如下。我使用特定的cpuset启动一个docker容器:

docker run --cpuset-cpus="0-2" # ...
Run Code Online (Sandbox Code Playgroud)

在该容器内,我运行一个 shell 脚本作为入口点,该 shell 脚本将make在某个时候运行。我想弄清楚有多少工作(-j)。我当然可以通过环境传递已分配 CPU 的数量,但更喜欢自动检测它的方法。

我知道我可以使用taskset -c -p $$cat /proc/self/status | grep Cpus_allowed_list检索Cpus_allowed当前进程的 ,但我不知道如何检索允许的 CPU 的实际数量。我想避免解析这些命令的输出或摆弄Cpus_allowed掩码,但会在没有选项时这样做。

virtualization linux scheduling docker

15
推荐指数
1
解决办法
1万
查看次数

为什么 Windows 任务计划程序试图启动多个实例?

我们有许多 Windows 计划任务,它们运行在集群中的一个 Server 2008 Webserver(不是 R2)上。

我们最近从原来的网络服务器集群迁移到了新的网络服务器集群(Server 2008 - 而不是 R2)。

运行 Windows 任务的新网络服务器(在集群中)的设置与我们认为的原始网络服务器相同。

但是我们现在发现,在新的 Windows Server 上,Windows 任务计划程序似乎想要立即启动每个任务 3 次。

如果我们设置选项来排队一个新任务,我们会得到:

事件 ID 324 任务计划程序已将任务“\Client Reporting”的实例“{9a1a8411-b042-45ff-8e6b-89874df230d7}”排入队列,并将在实例“{2bcc3df6-ea3b-4453-90c2-75b88b1946s3”完成后立即启动它

如果我们设置停止现有任务的选项,我们会得到:

事件 ID 323 任务计划程序停止了任务“\Client Reporting”的实例“{e685a910-b32b-414e-85fd-96bbe54314a2}”以启动新实例“{4db66265-1f51-4ede-8535-ac7c3cb5c4c1”

勾选设置:

  • 允许任务按需运行。

  • 错过预定的开始后尽快运行任务。

  • 如果运行时间超过 1 小时,请停止任务。

  • 如果正在运行的任务在请求时没有结束,则强制它停止。

  • 仅当计算机使用交流电源时才启动任务。

  • 如果计算机切换到电池供电,则停止任务。

选定的选项:如果任务已经在运行 - 停止现有实例。

注意:我们将任务从集群中的一台服务器移动到另一台服务器,以查看是否是我们选择的特定服务器上的 Task Scheduler 导致了问题。同样的行为。

可能与新服务器的构建有关吗?

我们在另一个服务器集群上设置了非常相似的任务,无需多次启动即可正常工作。将这些任务与此处的任务进行比较 - 通过任务计划程序中的选项,我们可以使用的设置似乎没有任何明显不同。

触发器:该任务计划每天触发一次,每小时触发一次 - 如果超过此时间则停止。

操作:运行 .bat 文件。

什么可能导致这种情况/我们可以在哪里查看导致任务以这种方式多次启动的逻辑?

windows-server-2008 scheduled-task scheduling

12
推荐指数
1
解决办法
4万
查看次数

如果同一任务已在运行,如何阻止计划任务运行?

我编写了一个 php 脚本来检查文件夹中是否有任何新文件,如果存在任何新文件,请将它们上传到服务器。这些文件可能非常大。我想经常运行这个脚本 - 假设每 5 分钟 - 作为计划任务,以便文件尽快移动到服务器。但是,一旦脚本已经尝试上传文件,我不希望它再次运行,因为我担心第二个实例会覆盖已经上传到服务器的文件。

除非脚本已在运行,否则如何将脚本作为计划任务运行?

scripting windows windows-xp scheduled-task scheduling

11
推荐指数
1
解决办法
4万
查看次数

ionice 与软件 RAID

ionice 在软件 RAID 环境中工作吗?我无法为 md 设备设置 CFQ 调度程序,因为没有文件 /sys/block/md0/queue/scheduler 。似乎底层磁盘的调度程序设置没有传播到 RAID 设备。

想法?

linux raid ionice scheduling

5
推荐指数
1
解决办法
825
查看次数

5
推荐指数
2
解决办法
8820
查看次数

AD:在午夜推出 MSI 应用程序

使用 Windows Server 的 Active Directory 和组策略,是否可以在预定时间(例如午夜)推出 MSI 文件?

windows-server-2003 msi scheduling

5
推荐指数
1
解决办法
134
查看次数

跨机器管理流程工作流的程序?

我有一个非常需要重构的内部 Perl 脚本。为了不重新发明轮子,我想看看是否存在与它等效的开源软件,但我很难找到。

该脚本在所有主机上作为守护程序运行,并允许我执行以下操作:

  1. 在 Host1 上运行 ProcessA。
  2. 在 Host2 上,一旦 ProcessA 在 Host1 上成功完成,运行 ProcessB。
  3. 在 Host1 上,一旦 ProcessB 在 Host2 上成功完成,运行 ProcessC。

无论如何,这都不是火箭科学,但我似乎找不到任何可以复制该功能的东西。 RunDeck 很接近,但我看不到哪里可以跨不同主机管理流程工作流。

这里有人有什么我应该调查的吗?

remote-access process scheduling

5
推荐指数
1
解决办法
636
查看次数

Linux 上的批处理

在业务中的另一个流程完成后,我们目前正在设置服务器以进行一些繁重的工作 (ETL),目前我们正在通过计划的 cron 作业或远程执行(通过 ssh)来启动作业。本周早些时候,我们遇到了系统上并行运行的作业过多的问题,这导致所有作业在争夺 CPU 时间时都以蜗牛般的速度运行。

我一直在寻找一个批处理调度程序,一个我们可以将作业插入运行队列的系统,系统将一个一个地处理它们。任何人都可以就一个程序/系统提出建议吗?由于该项目的鞋带性质,低成本 / FOSS 将受到赞赏。

linux batch scheduling batch-processing

3
推荐指数
3
解决办法
5984
查看次数

漂亮的 renice 和 ionice

我已经阅读nice reniceionice控制正在运行的进程的调度优先级。但是,我仍然不明白它们何时以及如何有用。例如做这样的事情:

nice -n 13 pico myfile.txt
Run Code Online (Sandbox Code Playgroud)

scheduling nice

2
推荐指数
1
解决办法
3895
查看次数

什么是 I/O 调度中的前端合并以及如何调整此参数?

我的 Linux 使用Deadline算法进行 I/O 调度。其中一个参数是 下的front_merges参数/sys/block/sda/queue/iosched/front_merges。默认情况下它设置为 1,这意味着可能会发生前合并。如果不期望发生前端合并,可以将其设置为 0 以获得性能提升。

  1. 什么是前端合并?有人可以描绘一下吗?
  2. 我如何知道或测试前端合并是否发生在我的系统上?

linux io scheduling

2
推荐指数
1
解决办法
2202
查看次数

ionice对NFS客户端有影响吗?

我需要在 NFS 共享上递归删除数百万个目录,为了避免任何性能问题,我运行了以下命令:

ionice -c 3 -t find /dir -type f -exec rm {};

这将删除所有文件和剩余的空目录,我可以使用 rm -rf 删除。

但我无法说 ionice 对上述命令是否有任何影响。

来自 man,ionice 3 级:

仅当没有其他程序在定义的宽限期内请求磁盘 io 时,以空闲 io 优先级运行的程序才会获得磁盘时间。空闲 io 进程对正常系统活动的影响应该为零。

从源代码中,我看到 ionice set ioprio_set

那么,ioprio_set 是什么?

ioprio_get() 和 ioprio_set() 系统调用分别获取和设置一个或多个线程的 I/O 调度类和优先级。

这是否意味着进程线程带有额外的属性供 I/O 调度程序使用它们来调度进程的 I/O?

这向我提出了以下问题:

  • I/O 调度程序通常知道磁盘上的 I/O 负载还是只是将 I/O 调度到磁盘?
  • 如果是这种情况,即 I/O 调度程序了解磁盘上的负载并据此做出决策,我认为 IO 调度类和优先级不会对远程磁盘的 IO 调度产生任何影响。因此 ionice 不会产生任何效果。
  • 如果不是,我认为 IO 调度类和优先级可能会对远程磁盘(也如 NFS)的 IO 调度产生影响。因此,如果多个用户/进程使用相同的 NFS 磁盘,ionice 将会工作,其中 I/O 调度程序根据其他用户/进程是否使用相同的 NFS 磁盘来为给定线程调度 IO。

如果我完全错了,请纠正我。 …

nfs io ionice scheduling scheduler

2
推荐指数
1
解决办法
1620
查看次数