我看到一个非常非常奇怪的行为与bash(RHEL 5.3版本3.2.25).
我有一个'Launcher'脚本执行以下操作(作为前台进程,在一个始终保持打开的终端中运行):
上面的想法主要是让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) 我不知道为什么我的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)
任何建议,想法或解决方案?;)
在我的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'.
有没有人有更好的想法怎么做?
谢谢.
我正在使用Graz的Quartz插件来逐步进行同步作业,但是我无法使用该0 * * * * *定义并抛出一些异常:
加载插件管理器时出错:无法找到类grails.plugins.quartz.DefaultGrailsJobClass的Class参数的构造函数(注意:已经过滤了堆栈跟踪.使用--verbose查看整个跟踪.)
引起:java.lang.IllegalArgumentException:作业类中的Cron表达式'0*****'cl.ionix.softoken.jobs.SendRefreshStatusByMinuteJob不是有效的cron表达式
什么是每分钟执行正确的cron表达式?
我安排了具有相同名称和不同参数的作业,但它没有添加到 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, ");
我对 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)
但是以前的工人怎么了?我怎样才能找出它停止的原因?
我需要运行一个作业,在设置比赛的字段时向用户发送电子邮件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可以稍后设置.那么有什么解决方案如何在设置字段后运行作业?谢谢你.
在我尝试了 template.json 的几种变体之后,我仍然在 AWS Cloudformation 控制台中收到以下错误:
属性验证失败:[属性 {/Connections} 的值与类型 {Object} 不匹配]
connection jobs amazon-web-services aws-cloudformation aws-glue
我正在使用 Ubuntu。
如果给我一个作业的 PID,我如何将暂停的作业带到后台/前台和运行状态?
我知道,bg/fg但他们需要job id不PID。
另外,我暂停工作
kill -STOP <PID>
Run Code Online (Sandbox Code Playgroud)
我知道我可以恢复它
kill -CONT <PID>
Run Code Online (Sandbox Code Playgroud)
但我不知道如何通过这个 PID 使用 bg 和 fg 命令。
编辑:我想说清楚:
场景:我有一个暂停的工作,我知道它的 PID。我怎样才能把它带回来并使它工作背景?
我正在做一个 Laravel 项目。我正在使用作业队列来执行一些功能。我使用主管来运行作业监听命令。但我不太了解这个概念。这是我的问题。
jobs ×10
bash ×2
cron ×2
grails ×2
hangfire ×2
linux ×2
asp.net ×1
asp.net-mvc ×1
aws-glue ×1
background ×1
c# ×1
connection ×1
debian ×1
laravel ×1
queue ×1
sh ×1
shell ×1
supervisord ×1
worker ×1