我熟悉并shutdown在Linux中使用,通常只是这样做
> shutdown -h now
但是有没有办法阻止关机发生,比如如果我打算从现在开始关机10分钟然后在5分钟内我发现我真的不想关机?
问题:我想实现几个正在侦听MQ服务器队列以进行异步作业的php-worker进程.现在的问题是,简单地将这个进程作为守护进程在服务器上运行并不能真正给我任何级别的控制(负载,状态,锁定)......除了可能用于转储ps -aux.因此,我正在寻找一种允许我监视和控制实例的运行时环境,无论是在系统(进程)级别还是在更高层(某种Java风格的应用程序服务器)上
有什么指针吗?
PHP的pcntl_fork函数应该像C中的标准fork函数一样分叉一个进程.
但是我想知道这个函数是否真的要求进程,或者它是否以不同的方式模拟该行为.
如果它确实要求进程,那么很清楚哪个进程是:Apache的子进程之一.
只要Apache使用prefork MPM(即每个请求一个进程),这就没问题.
但是如果Apache使用worker MPM会发生什么?
当使用worker MPM时,每个Apache子进程都包含许多线程,每个线程处理不同的HTTP请求.因此,如果您在这种情况下分叉进程,我甚至无法想到所有这些线程和请求所发生的情况.
因此,如果pcntl_fork()确实要求进程,那么我认为如果将Apache设置为使用worker MPM,则使用此函数并不是一个好主意.
专家说什么?我推理得好,还是我只是胡说八道?
Ryan Tomayko用这篇关于使用Unix进程控制命令的文章引发了一场火灾风暴.
我们应该做更多这方面的事情.更多这一点.我在谈论fork(2),execve(2),pipe(2),socketpair(2),select(2),kill(2),sigaction(2)等等.这些是我们的朋友.他们非常想要帮助我们.
我有一些代码(delayed_jobDataMapper的一个克隆,我认为它适合这个,但我不清楚如何利用列出的命令.有关如何改进此代码的任何想法?
def start
say "*** Starting job worker #{@name}"
t = Thread.new do
loop do
delay = Update.work_off(self)
break if $exit
sleep delay
break if $exit
end
clear_locks
end
trap('TERM') { terminate_with t }
trap('INT') { terminate_with t }
trap('USR1') do
say "Wakeup Signal Caught"
t.run
end
end
Run Code Online (Sandbox Code Playgroud) 我创建了一个使用ignore_user_abort()函数在后台运行的脚本.但是,我愚蠢到不插入任何类型的代码来使脚本停止,现在它每30秒发送一次电子邮件......
有没有办法停止脚本?我在共享主机,所以我无法访问命令提示符,我不知道PID.
我试图将elasticsearch作为一个进程启动并在不关闭命令提示符的情况下停止它.为了创建一个新进程,我正在使用:
C:\Users\User1\Desktop\Work\ElasticSearch\elasticsearch-1.3.1\bin>start /B elasticsearch
C:\Users\User1\Desktop\Work\ElasticSearch\elasticsearch-1.3.1\bin>start /B elasticsearch
C:\Users\User1\Desktop\Work\ElasticSearch\elasticsearch-1.3.1\bin>[2014-08-19 15:23:26,351][WARN ][bootstrap ] jvm uses the c
lient vm, make sure to run `java` with the server vm for best performance by adding `-server` to the command line
[2014-08-19 15:23:26,433][INFO ][node ] [Batroc the Leaper] version[1.3.1], pid[5800], build[2de6dc5/2014-07-28T14:45:15
Z]
Run Code Online (Sandbox Code Playgroud)
该过程在端口9200上运行.
如何使用此命令或类似于已打开的命令提示符或运行elasticsearch节点进程的现有命令提示符来获取进程PID或名称以使用taskkill来终止此进程:
taskkill /PID <pid>
Run Code Online (Sandbox Code Playgroud)
Pid为5800(显示在上面的控制台中的进程日志中)不起作用.Windows任务管理器没有名为elasticsearch的进程.它只有一个cmd进程用于运行elasticsearch的命令提示符,当我终止该进程时,elasticsearch也会被杀死.
我想使用Boost Process,尽管还没有发布.我做到了
svn co svn://svn.boost.org/svn/boost/sandbox/process/ boost-process
Run Code Online (Sandbox Code Playgroud)
添加boost-process到包含path(-I),#included <boost/process.hpp>但编译抱怨filesystem_error没有定义:
boost-process/boost/process/operations.hpp: In function ‘std::string boost::process::find_executable_in_path(const string&, std::string)’:
boost-process/boost/process/operations.hpp:85:36: error: ‘filesystem_error’ is not a member of ‘boost::filesystem3’
In file included from boost-process/boost/process.hpp:42:0,
from tests/../fio.hpp:22,
from tests/t_histogram.cpp:18:
boost-process/boost/process/operations.hpp:130:32: error: ‘filesystem_error’ is not a member of ‘boost::filesystem3’
Run Code Online (Sandbox Code Playgroud)
我尝试将名称空间更改为boost::filesystem3但结果相同.
定义filesystem_error是
class BOOST_SYMBOL_VISIBLE filesystem_error : public system::system_error
Run Code Online (Sandbox Code Playgroud)
被BOOST_SYMBOL_VISIBLE隐藏呢?
我有一个bash脚本,在循环中进行一些并行处理.我不希望并行进程加速CPU,所以我使用sleep命令.这是一个简化版本.
(while true;do sleep 99999;done)&
所以我从bash提示符执行上面的行,得到类似的东西:
[1] 12345
[1]作业号在哪里,是12345while循环的进程ID(pid).我做了一个kill 12345得到:
[1]+ Terminated ( while true; do
sleep 99999;
done )
看起来整个脚本终止了.但是,我做了一个ps aux|grep sleep,发现睡眠命令仍然很强大,但有自己的pid!我可以杀了sleep,一切似乎都很好.但是,如果我先杀死睡眠,那么while循环会启动一个新的sleeppid.这对我来说是一个惊喜,因为睡眠与while循环并不平行.循环本身是一条执行路径.
所以我有两个问题:
当一个进程执行时,PCB的内容(在内核内存空间?)被加载到CPU寄存器,状态寄存器,内核堆栈指针,用户堆栈指针等.
当存在上下文切换到另一个进程时,当前的"上下文"被存储回PCB并且切换到新PCB.
现在,当内核想要将这块PCB带回"上下文"时,它如何找到这块现在在内存中的PCB呢?什么信息可以帮助内核找到内存中的PCB?
我们正在使用Gearman和Supervisord在我们的服务器上排队和运行作业.我似乎无法解决的一个问题是完全从工作队列中删除Gearman工作人员.我已经尝试删除客户端/工作者源文件以及GearmanWorker::unregister从另一个工作者调用.在运行时,$ gearadmin --status我仍然在作业队列中看到worker函数.有什么建议?
以下是来自http://www.php.net/manual/en/intro.pcntl.php的报价
Process Control should not be enabled within a web server environment and unexpected results may happen if any Process Control functions are used within a web server environment.
在我的网络服务器上启用它有什么副作用?它的威胁和安全问题是什么?
非常感谢你的帮助