我最近开始有问题,我的Apache崩溃,无法重新启动。 托pipe公司告诉我,这与“信号灯”有关,并发送给我这样一个解决问题的方法:
/usr/bin/ipcrm sem $(/usr/bin/ipcs -s | grep www-data | awk '{print$2}')
现在很高兴有一个命令执行,解决了我的问题,但我再也不知道这是什么。
什么是信号灯,谁把它们放在哪里,他们在哪里,他们是如何崩溃我的Apache?
我会很高兴的一些一般的解释!
正如其他人所说的信号量是IPC(进程间通信结构)。 象所有IPC的信号量被用来允许不同的进程相互通信。
它们基本上是使用特殊系统调用(如sempost(3),semwait(3),semget(2)和semop(2))创build,访问和销毁的计数器。 请参阅linux系统上的sem_overview(7)以获取简要说明。
这里沟通的定义是相当原始的。 信号量的“沟通”是指通过上述的系统/库调用来读取,递增或递减计数器。
关于信号量的特殊之处在于,它们一次只能有一个进程对它们进行操作, 信号操作是保证primefaces的 ,也就是说你不能进入一个比较因为内核不会换出执行信号量操作的进程。
另一个特别的地方是它们是在共享内存中创build的,允许多个进程访问它们。
他们如何显示/创build是程序使用semget(2)创build它们。 例如apache在运行时创buildsempahores。
ipcs -l会告诉你系统的ipc资源。
你可以用sysctl来操作一些系统信号量和ipc相关的限制。 尝试sysctl kernel.sem通过sysctl查看sempahore相关的设置。 如果你想保留任何sysctl的变化,你可以把它们放到/etc/sysctl.conf 。
信号量是进程间通信的一种forms(ipcrm中的ipc)。 它们由操作系统提供,Apache的开发人员使用它们在不同的Apache进程之间进行通信。 它们不太可能成为Apache崩溃的原因,但是它在崩溃时不会被释放,从而阻止Apache的新实例启动。
维基百科: 信号量(编程)