标签: jobs

bash发布了额外的,虚假的后台进程

我看到一个非常非常奇怪的行为与bash(RHEL 5.3版本3.2.25).

我有一个'Launcher'脚本执行以下操作(作为前台进程,在一个始终保持打开的终端中运行):

  1. 它在后台启动一个程序A,然后退出.
  2. 然后,A在后台启动程序B的两个(进程)实例(例如:B1,B2);
  3. A,还在后台启动程序C的一个实例.

上面的想法主要是让A,C和两个B彼此通信,直到它们被用户杀死.(它们继续while sleep DURATION; do ... ; done循环运行.)

问题:

完成上述3个步骤之后,当我ps -ef从另一个终端窗口重复发出时,我有时会看到一些额外的,虚假的B实例(比如说B3,B4 ......)和/或有时会列出一个额外的,虚假的A实例!

这些额外的实例是暂时的 - 它们来自ps -ef列表.

此外,这些虚假实例恰好是有效(或期望)过程的子项 - 而不是兄弟姐妹.例如,B3和B4将分别列出B1和B2作为其父级; 同样,假的A2会将A列为其父级!

现在,我PRETTY非常确信我是NO WAY从B内部产生的任何追加B的情况下,也没有任何一个实例从里面A.

那么,这里发生了什么?

提前谢谢了.

PS:我已经看到了一个类似的问题(多个虚假实例),一段时间回到cron作业的背景下,这些作业被设计成在初次首次发布时无限期地挂起.在这里,我会看到我的cron作业的多个实例,即使我有明确的逻辑来防止crond启动任何其他实例(通过检查磁盘上是否存在锁定文件).而且,即使在这里,我也无法弄清楚问题.


$ ps -ejfH 
UID        PID  PPID  PGID   SID  C STIME TTY          TIME CMD
root     28503     1 28474 11126  0 22:14 pts/1    00:00:31   /bin/bash A
root     28525 28503 28474 11126  0 22:14 pts/1    00:00:26 …
Run Code Online (Sandbox Code Playgroud)

linux bash jobs background

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

Cronjob在Debian上失败了

我不知道为什么我的cronjob没有执行.以下是详细信息:

我在/ usr/src中有一个名为stundenplan.sh的脚本,它执行一个jar文件.如果从控制台运行脚本本身,则脚本本身可以正常工作.但试图从cronjob运行它不起作用.

该脚本如下所示:

#!/bin/sh
java -jar vorlesungsplaene.jar
Run Code Online (Sandbox Code Playgroud)

jar文件位于预期的同一目录中.

我定义了两个cronjobs:

# m h  dom mon dow   command
  30 * * * * /usr/src/stundenplan.sh
 0-59 * * * * echo "dude" >> /tmp/test.txt
Run Code Online (Sandbox Code Playgroud)

下面的工作运行正常,在test.txt文件中精心编写"dude".

正如您在syslog中看到的那样,上面的作业失败了:

Jul 18 15:29:01 vps47327 /USR/SBIN/CRON[16361]: (root) CMD (echo "dude" >> /tmp/test.txt)
Jul 18 15:30:01 vps47327 /USR/SBIN/CRON[16364]: (root) CMD (/usr/src/stundenplan.sh)
Jul 18 15:30:01 vps47327 /USR/SBIN/CRON[16365]: (root) CMD (echo "dude" >> /tmp/test.txt)
Jul 18 15:30:01 vps47327 /USR/SBIN/CRON[16363]: (CRON) error (grandchild #16364 failed with exit status 1)
Run Code Online (Sandbox Code Playgroud)

任何建议,想法或解决方案?;)

cron jobs debian sh

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

Grails - 从配置文件中获取作业触发器值

在我的grials应用程序中,我有一个运行的工作,这是它的触发器防御:

    static triggers = {
    simple name: 'myJob', startDelay: 1000, repeatInterval: 36000000   
    }
Run Code Online (Sandbox Code Playgroud)

我想改变它的价值不应该硬编码,但它们应该从congif/properties文件中获取.

我试过这个:

Config.groovy中:

myJob {
simpleName = 'myJob'
startDelay = '1000'
repeatInterval = '36000000'
}
Run Code Online (Sandbox Code Playgroud)

并在工作触发器中:

    static triggers = {
    simple name: grailsApplication.config.myJob.name, startDelay: grailsApplication.config.myJob.startDelay, repeatInterval: grailsApplication.config.myJob.repeatInterval   
    }
Run Code Online (Sandbox Code Playgroud)

但后来我收到一条消息说:不能从静态上下文中引用非静态符号'grailsApplication'.

有没有人有更好的想法怎么做?

谢谢.

grails jobs

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

grails中作业的每分钟的cron定义是什么?

我正在使用Graz的Quartz插件来逐步进行同步作业,但是我无法使用该0 * * * * *定义并抛出一些异常:

加载插件管理器时出错:无法找到类grails.plugins.quartz.DefaultGrailsJobClass的Class参数的构造函数(注意:已经过滤了堆栈跟踪.使用--verbose查看整个跟踪.)

引起:java.lang.IllegalArgumentException:作业类中的Cron表达式'0*****'cl.ionix.softoken.jobs.SendRefreshStatusByMinuteJob不是有效的cron表达式

什么是每分钟执行正确的cron表达式?

cron grails jobs quartz-scheduler

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

为什么 HangFire 同名重复性工作不起作用?

我安排了具有相同名称和不同参数的作业,但它没有添加到 hangfire 服务器中,只有最后一个作业添加到服务器中,我错过了什么吗?我的代码在下面

        RecurringJob.AddOrUpdate(
            () => Console.WriteLine("HelloNew jobCreated, "),
            Cron.Minutely);
        RecurringJob.AddOrUpdate(
            () => Console.WriteLine("HelloNew jobCreated 12, "),
            Cron.Minutely);
        RecurringJob.AddOrUpdate(
           () => Console.WriteLine("HelloNew jobCreated 2, "),
           Cron.Minutely);
Run Code Online (Sandbox Code Playgroud)

服务器中只添加最后一个作业 Console.WriteLine("HelloNew jobCreated 2, ");

asp.net asp.net-mvc jobs hangfire

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

Hangfire 后台作业神秘地停止运行

我对 Hangfire 1.4.3.0(WebAPI、SQL 服务器存储)有一个奇怪的问题 - 在作业开始后正好 30 分钟后,hangfire 重新启动它并分配一个新的工作人员。跟踪级别的默认 hangfire 日志记录没有显示任何有用的信息。在我的 Web 应用程序日志中,我只能看到该作业已启动,且 hangfire 数据库中的 State 表显示分配了新工作人员:

Id  JobId   Name    Reason  CreatedAt   Data
27  8   Processing  NULL    2017-05-17 10:34:51.640 {"StartedAt":"2017-05-17T10:34:51.6389278Z","ServerId":"mypc:3332","WorkerNumber":"22"}
28  8   Processing  NULL    2017-05-17 11:04:51.683 {"StartedAt":"2017-05-17T11:04:51.6819303Z","ServerId":"mypc:3332","WorkerNumber":"14"}
Run Code Online (Sandbox Code Playgroud)

但是以前的工人怎么了?我怎样才能找出它停止的原因?

c# jobs background-process asp.net-web-api hangfire

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

设置特定对象字段后30分钟后运行作业

我需要运行一个作业,在设置比赛的字段时向用户发送电子邮件published_at.所以我有一个Contest模型和一个运行工作的方法:

class Contest < ApplicationRecord

  after_create :send_contest

  private

  def send_contest
    SendContestJob.set(wait: 30.minutes).perform_later(self)
  end

end
Run Code Online (Sandbox Code Playgroud)

但是即使published_at字段是空白的,工作也会运行.验证要存在的字段不是一个选项,因为published_at可以稍后设置.那么有什么解决方案如何在设置字段后运行作业?谢谢你.

jobs ruby-on-rails ruby-on-rails-5

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

什么是正确的 AWS::Glue::Job Connections 属性结构?

在我尝试了 template.json 的几种变体之后,我仍然在 AWS Cloudformation 控制台中收到以下错误:

属性验证失败:[属性 {/Connections} 的值与类型 {Object} 不匹配]

connection jobs amazon-web-services aws-cloudformation aws-glue

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

使用具有给定 PID 的 bg 和 fg

我正在使用 Ubuntu。

如果给我一个作业的 PID,我如何将暂停的作业带到后台/前台和运行状态?

我知道,bg/fg但他们需要job idPID

另外,我暂停工作

kill -STOP <PID>
Run Code Online (Sandbox Code Playgroud)

我知道我可以恢复它

kill -CONT <PID>
Run Code Online (Sandbox Code Playgroud)

但我不知道如何通过这个 PID 使用 bg 和 fg 命令。

编辑:我想说清楚:

场景:我有一个暂停的工作,我知道它的 PID。我怎样才能把它带回来并使它工作背景?

linux bash shell jobs

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

Laravel 中的 Job、Queue 和 Worker 有什么区别?

我正在做一个 Laravel 项目。我正在使用作业队列来执行一些功能。我使用主管来运行作业监听命令。但我不太了解这个概念。这是我的问题。

  1. 我有8个工人。他们如何参与作业队列系统?
  2. 如果我增加它们的数量,作业处理速度会更快吗?
  3. 只要我增加它们,它也会占用更多的内存吗?如果我的服务器有 16GB 内存,我可以有多少工人?
  4. 作业要排队吗?(下图) 作业队列

queue jobs worker supervisord laravel

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