正如标题所说,我正在运行多个游戏服务器,并且每个游戏服务器都具有相同name但不同PID的port数量.我想匹配PID正在侦听某个端口的服务器,然后我想杀死这个进程.我需要它来完成我的bash脚本.
这甚至可能吗?因为它没有在网上找到任何解决方案.
我有一个与Linux中的线程实现相关的查询.
Linux没有明确的线程支持.在用户空间中,我们可能使用线程库(如NPTL)来创建线程.现在,如果我们使用NPTL,它支持1:1映射.
内核将使用该clone()函数来实现线程.
假设我创建了4个线程.那意味着:
task_struct.task_struct,将根据克隆的参数提供共享资源(CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND).现在我有以下查询:
我在两种情况下都要求:技术上和风格上.
我的应用程序/守护程序可以保留pidfile /opt/my_app/run/吗?
这样做真的很糟糕吗?
我的需要是这样的:我的守护进程在特定用户下运行,并且实现者必须mkdir一个新的目录/var/run,chown和chgrp它以使我的守护进程运行.似乎更容易将pidfile保持为本地(对守护进程).
我已经开始使用以下代码进行处理
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "path");
try {
Process p = pb.start();
}
catch (IOException ex) {}
Run Code Online (Sandbox Code Playgroud)
现在我需要知道我刚刚开始的进程的pid.
我已经安装了Postgresql,然后在我的本地Mac OSX Mountain Lion上运行了一堆rails应用程序并创建了数据库等.过了一段时间,当我启动pgAdminIII并尝试启动数据库服务器时,我遇到了这个错误:

快速谷歌显示这篇文章.更多的浏览指出,可能存在某种postmaster.pid文件,这可能是导致这种情况的根本原因.如果我删除那些东西就没事了.
但是,在我删除计算机上的东西之前,我想确保我以系统的方式调试它,这不会导致更多的问题.
我在删除该文件之前读到的某个地方,我需要运行这个命令:
ps auxw | grep post
Run Code Online (Sandbox Code Playgroud)
如果我没有得到任何结果,可以删除该文件.否则不是.好吧,我得到了这个命令的结果:
AM 476 0.0 0.0 2423356 184 s000 R+ 9:28pm 0:00.00 grep post
Run Code Online (Sandbox Code Playgroud)
所以现在当然我非常困惑.
所以我该怎么做?
这是我的postgres服务器错误日志的一部分:
FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 171) running in data directory "/usr/local/var/postgres"?
Run Code Online (Sandbox Code Playgroud)
Postgresql仍然没有运行,仍然得到相同的错误,没有任何改变.我太老了,没有检查SO就删除了东西.
有些专家可以指导一个菜鸟.
谢谢
有人能解释一下Erlang中Pid的结构吗?
Pids看起来像这样:<A.B.C>例如<0.30.0>,但我想知道这三个"位"的含义是什么:A,B和C.
本地节点上的"A"似乎始终为0,但当Pid的所有者位于另一个节点上时,此值会更改.
是否可以仅使用Pid在远程节点上直接发送消息?这样的事情:<4568.30.0>!消息,无需明确指定已注册进程的名称和节点名称({proc_name,Node}!Message)?
PID和TID有什么区别?
标准答案是PID用于进程,而TID用于线程.但是,我已经看到一些命令可以互换使用它们.例如,htop有一个PID列,其中显示了相同进程的线程的PID(具有不同的值).那么PID何时表示线程或进程?
我正在使用程序协同与ssh隧道
它工作,我只需打开一个控制台类型这两个命令:
ssh -f -N -L localhost:12345:otherHost:12345 otherUser@OtherHost
synergyc localhost
Run Code Online (Sandbox Code Playgroud)
因为我很懒,我制作了一个Bash-Script,只需点击一下图标即可运行:
#!/bin/bash
ssh -f -N -L localhost:12345:otherHost:12345 otherUser@OtherHost
synergyc localhost
Run Code Online (Sandbox Code Playgroud)
上述与bash脚本工作为好,但现在我也想杀死协同效应,并通过鼠标点击一个SSH通道,所以我必须协同和ssh的PID保存到文件后,杀死他们:
#!/bin/bash
mkdir -p /tmp/synergyPIDs || exit 1
rm -f /tmp/synergyPIDs/ssh || exit 1
rm -f /tmp/synergyPIDs/synergy || exit 1
[ ! -e /tmp/synergyPIDs/ssh ] || exit 1
[ ! -e /tmp/synergyPIDs/synergy ] || exit 1
ssh -f -N -L localhost:12345:otherHost:12345 otherUser@OtherHost
echo $! > /tmp/synergyPIDs/ssh
synergyc localhost
echo $! > /tmp/synergyPIDs/synergy
Run Code Online (Sandbox Code Playgroud)
但是这个脚本的文件是空的.
如何获得ssh和协同作用的PID?
(我尽量避免ps aux | grep ... …
我有一个问题,MySQL没有启动我的QNAP NAS.
我首先发现这是因为无法通过phpMyAdmin登录 - 收到错误:
#2002 Cannot log in to the MySQL server
Run Code Online (Sandbox Code Playgroud)
然后我去尝试启动mysql,因为我猜这是一个常见问题,但它只是给出了一般错误.
我经历了mysql.sock文件和一切的故障排除,更改了它的权限,但没有任何工作.
我多次重启我的NAS.
我最终试图重启mysql.这样做我得到:
ERROR! MySQL manager or server PID file could not be found!
Run Code Online (Sandbox Code Playgroud)
我找不到任何特定的QNAP或任何一般类型的故障排除.我发现的一切似乎与OSX有关.