标签: jobs

批处理和后台作业

根据维基,批处理是在计算机上执行一系列程序(“作业”)而无需人工干预。

我想知道批处理和将进程置于后台之间有什么区别和关系?

后台作业总是批处理吗?是否有批处理没有后台?

感谢致敬!

architecture jobs background batch-file

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

如何从 SGE 获取失败的作业列表

如何从 SGE 获取(最近)失败的作业列表(failed=100 或 exit_status=137)?从qacct帮助:

[-j [job_id|job_name|pattern]]    list all [matching] jobs
Run Code Online (Sandbox Code Playgroud)

如何使用模式?我尝试了以下方法,不起作用。

qacct  -j failed=100
Run Code Online (Sandbox Code Playgroud)

jobs sungridengine

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

Powershell命令超时

我正在尝试在 powershell 中执行函数或脚本块并设置执行超时。

基本上我有以下内容(翻译成伪代码):

function query{
    #query remote system for something
}

$computerList = Get-Content "C:\scripts\computers.txt"

foreach ($computer in $computerList){
    $result = query
    #do something with $result
}
Run Code Online (Sandbox Code Playgroud)

查询的范围可以从使用 Get-WmiObject 的 WMI 查询到 HTTP 请求,并且脚本必须在混合环境中运行,其中包括并非都具有 HTTP 接口的 Windows 和 Unix 计算机。因此,某些查询必然会挂起或需要很长时间才能返回。在我寻求优化的过程中,我写了以下内容:

$blockofcode = {
    #query remote system for something
}

foreach ($computer in $computerList){
    $Job = Start-Job -ScriptBlock $blockofcode -ArgumentList $computer
    Wait-Job $Job.ID -Timeout 10 | out-null
    $result = Receive-Job $Job.ID
    #do something with result
}
Run Code Online (Sandbox Code Playgroud)

但不幸的是,工作似乎带来了很多开销。在我的测试中,一个在 1.066 秒内执行的查询(根据 $blockofcode …

powershell jobs timeout

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

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

如何更新作业以允许我在作业完成运行后收到电子邮件 (slurm)

我已经在计算集群上提交了几个作业,但没有设置 --mail-user。我现在可以更新规范吗?希望在作业完成后收到电子邮件。非常感谢!

linux jobs cluster-computing slurm

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

如何在 Makefile 中指定要运行的默认作业数量?

考虑以下人为的 Makefile:

.PHONY: all one two
SLEEP = 2

all: one two

one two:
    @sleep $(SLEEP)
    @echo $@
Run Code Online (Sandbox Code Playgroud)

运行make -j 2 all它可以在运行它们中的任何一个所需的时间内完成两个作业,因为它们都是并行运行的。如果您控制 make 的调用并记住每次都执行此操作,这将非常有效,但如果您控制的只是 Makefile,则效果不佳。

设置 MAKEFLAGS 环境变量也可以控制这个:

$ export MAKEFLAGS="-j 2"
$ make all
Run Code Online (Sandbox Code Playgroud)

但是,在 Makefile 中设置此值似乎不起作用:

MAKEFLAGS = -j 2
Run Code Online (Sandbox Code Playgroud)

失败。

export MAKEFLAGS="-j 2"
Run Code Online (Sandbox Code Playgroud)

失败。

同样设置 JOBS 似乎没有任何效果。有没有办法控制从 Makefile 内部运行的默认作业数量?

注意我知道我可以使用一个虚拟配方并从它内部调用一个递归 make,但这会带来大量的混乱,因为我需要为一大堆可能的目标设置它,我处理包含的 Makefile 不一定适合递归。

jobs makefile gnu-make

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

在 PowerShell 中重新启动已完成的后台作业

在 PowerShell 5.1 中,我使用以下命令创建了一个后台作业

Start-Job { while($true) { Get-Random; Start-Sleep 5 } } -Name Sleeper
Run Code Online (Sandbox Code Playgroud)

作业创建得很好,它也返回结果Receive-Job。我用Stop-Jobcmdlet停止了它。

我想在同一个 PS 会话中再次重新启动它。

我执行Get-Jobcmdlet,我看到那里的作业处于停止状态。

如何在不重新创建的情况下重新启动它?

我无法在 about_Jobs 中获取此信息。

脚本块只是一个示例脚本。我更想知道是否有办法重新启动已经存在的工作。

powershell jobs

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

Laravel 块和删除

我有大量要从数据库中删除的项目(1M+),我分叉了一个后台作业来处理这个问题,这样用户就不必等待它完成继续他/她正在做,问题是,当项目被删除时,应用程序变得无响应,所以我想我会逐块处理项目并睡眠几秒钟然后继续。

这是处理删除的代码:

// laravel job class
// ...
public function handle()
{
    $posts_archive = PostArchive::find(1); // just for the purpose of testing ;)
    Post::where('arch_id', $posts_archive->id)->chunk(1000, function ($posts) {
        //go through the collection and delete every post.
        foreach($posts as $post) {
            $post->delete();
        }
        // throttle
        sleep(2);
    });
}
Run Code Online (Sandbox Code Playgroud)

预期结果:帖子被分块并处理每个块,然后空闲 2 秒,重复此操作直到删除所有项目。

实际结果:随机数量的项目被删除一次,然后过程结束。没有错误没有指标,没有线索?

有没有更好的方法来实现这一点?

php jobs laravel eloquent

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

向SQL Server用户授予执行权限以仅运行特定作业

我有创建一个可由特定SQL用户运行的SQL Server代理作业的请求。

如何在不授予用户执行sp_start_job存储过程执行权限的情况下完成操作,这意味着他也可以运行所有其他禁止的作业?

sql sql-server jobs stored-procedures

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

如何检查 BigQuery 查询结果何时返回零记录?

我在 python 中有一个客户端 API,它执行 BigQuery 作业以触发查询并将查询结果写入相应的 BigQuery 表。如何确定该查询结果在任何执行时是否返回零记录?

蟒蛇代码:

def main(request):

    query = "select * from `myproject.mydataset.mytable`"
    client = bigquery.Client()
    job_config = bigquery.QueryJobConfig()
    dest_dataset = client.dataset(destination_dataset, destination_project)
    dest_table = dest_dataset.table(destination_table)
    job_config.destination = dest_table
    job_config.create_disposition = 'CREATE_IF_NEEDED'
    job_config.write_disposition = 'WRITE_APPEND'
    job = client.query(query, location='US', job_config=job_config)
    job.result()
Run Code Online (Sandbox Code Playgroud)

我想要如果查询结果没有记录,那么它应该为我打印一些消息。任何人都可以建议如何完成这项工作。

python jobs python-2.7 google-bigquery google-cloud-platform

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