我有一个无法杀死的进程kill -9 <pid>。在这种情况下有什么问题,特别是因为我是该流程的所有者。我认为没有什么可以逃避这个kill选择。
我之前在谷歌上搜索过这个并注意到了几种方法,但我猜谷歌并不知道所有。那么你如何将用户踢出你的 Linux 机器呢?另外,您如何才能看到他们首先登录?和相关的......如果用户登录到 X11 DE(不是我只是好奇的要求),你的方法是否有效?
传输间歇性地挂在我的 NAS 上。如果我发送 SIGTERM,它不会从进程列表中消失,并且<defunct>旁边会出现一个标签。如果我发送 SIGKILL,它仍然不会消失并且我无法终止父级,因为父级是init. 我可以摆脱该过程并重新启动传输的唯一方法是重新启动。
我意识到我能做的最好的事情就是尝试修复传输(我已经尝试过),但我是编译的新手,我想确保在我开始搞乱它之前我的种子已经完成。
有没有办法以友好的“请立即退出”方式关闭 GUI 应用程序,而无需对应用程序窗口进行图形访问?
例如,如果 Gnome/X 显示器崩溃为黑色,我想切换到 tty2 并关闭像 firefox 这样的应用程序,让它们保存配置等。最好不要进一步的用户查询。
我创建了一个脚本来在 crontab 上安装两个脚本。
#!/bin/bash
sudo crontab -l > mycron
#echo new cron into cron file
echo "*/05 * * * * bash /mnt/md0/capture/delete_old_pcap.sh" >> mycron #schedule the delete script
echo "*/12 * * * * bash /mnt/md0/capture/merge_pcap.sh" >> mycron #schedule the merge script
#install new cron file
crontab mycron
rm mycron
Run Code Online (Sandbox Code Playgroud)
脚本运行,并将这两行添加到 crontab。但是如果我再次运行脚本,它会再次添加这些行,因此我将有四行说相同的内容。我希望安装脚本运行时插入到 crontab 的行不会重复。我怎样才能做到这一点
我有一个应用程序服务器,我们通过运行下面的命令开始,只要我们运行下面的命令,它就会启动我的应用程序服务器
/opt/data/bin/test_start_stop.sh start
Run Code Online (Sandbox Code Playgroud)
为了停止我的应用程序服务器,我们这样做 -
/opt/data/bin/test_start_stop.sh stop
Run Code Online (Sandbox Code Playgroud)
因此,只要我的应用程序服务器正在运行,如果我运行ps aux,这就是我得到的 -
user@machineA:/home/user$ ps aux | grep gld_http
user 20426 0.0 0.0 8114 912 pts/4 S+ 13:33 0:00 grep gld_http
user 40509 0.1 0.9 3878120 1263552 ? Sl Sep22 1:53 /opt/data/bin/gld_http
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试制作一个 shell 脚本,我需要在其中停止我的应用程序服务器,然后我将在停止服务器后检查我的进程是否正在运行,如果我的进程仍在运行,那么我需要执行 kill -9我的应用程序pid。而且我不确定如何在 shell 脚本中获取我的进程的 pid 然后杀死它。
下面是我现在拥有的 shell 脚本,它将关闭我的应用程序服务器,然后检查我的进程是否仍在运行,如果它仍在运行,那么我需要获取进程的 pid 和在那个pid上执行kill -9。
#!/bin/bash
/opt/data/bin/test_start_stop.sh stop
if ps aux | grep -v "grep" | grep "gld_http"
then
echo "Server is still running"
# now get the pid …Run Code Online (Sandbox Code Playgroud) 如果我想尽可能小心和礼貌地终止进程,
我应该在终止命令中使用哪些信号,以什么顺序?
我想给程序任何时间来清理,如果它愿意的话,所以只是发送一个SIGTERM将是苛刻的,我想?
我会最后使用SIGKILL(" -9"),这很清楚。
但是从哪个开始呢?SIGHUP? 哪些信号只是浪费时间?
相关信号供参考,来自
man 7 signal
Signal Value Action Comment
??????????????????????????????????????????????????????????????????????
SIGHUP 1 Term Hangup detected on controlling terminal
or death of controlling process
SIGINT 2 Term Interrupt from keyboard
SIGQUIT 3 Core Quit from keyboard
SIGKILL 9 Term Kill signal
SIGPIPE 13 Term Broken pipe: write to pipe with no
readers
SIGTERM 15 Term Termination signal
Run Code Online (Sandbox Code Playgroud) 我想终止属于我将再次运行的 shell 脚本的后台进程。
这意味着在执行 shell 脚本之前,我想删除为同一脚本运行的后台进程。
有时我不得不使用kill -9作为终止我的 rails 服务器的最后手段。不幸的是,我必须经常这样做,以至于我在 bash_profile 中编写了一个辅助函数来完成它。
如果我手动执行 -- ps aux | grep '[r]ails],获取 pid(例如12345),并且kill -9 12345-- 它会杀死服务器并保持浏览器完好无损。但是我的功能也会杀死浏览器,我不想这样做:
function running {
ps -p $(lsof -i :3000 -t) &> /dev/null
}
function k9 {
if running
then
kill -9 $(lsof -i :3000 -t)
else
echo "Rails server is not running"
fi
}
Run Code Online (Sandbox Code Playgroud)
我已经确认它lsof -i :3000 -t获取的 pid 与我从中获取的 pid 相同ps aux,那么我做错了什么?
我在 OpenVZ VPS 上,我以非 root 用户身份创建了一个后台进程,然后取消了它,即
user@server:~$node server.js &
user@server:~$disown
Run Code Online (Sandbox Code Playgroud)
我 SSH 退出了 VPS,现在我又回来了,但我似乎无法使用其 PID 终止该进程。Pkill 1292. 它甚至以 root 身份失败。我知道它没有死,因为当我运行top它直到运行。此外,当我运行时,ps -l -p 1292我可以看到该过程一直在运行。
我可以说该进程没有附加到任何终端会话,因为ps命令在 TTY 上显示一个问号,即
我如何杀死这个进程?
我想将整个管道的 STDOUT 和 STDERR 重定向到/dev/null.
考虑到这是我的命令:
sudo lsof -i:22000 -t | xargs kill -9
Run Code Online (Sandbox Code Playgroud)
我知道这是错误的做法:
sudo lsof -i:22000 -t | xargs kill -9 >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
我们如何实现这一点,因为简单地添加>/dev/null 2>&1不会对管道产生任何影响,因为它将被解释为xargs kill -9?
如果我在 bash 脚本(类似于此脚本)中运行以将内容发送到文件:
sudo ./bar.sh > foo
Run Code Online (Sandbox Code Playgroud)
内容bar.sh:
echo 'for pid in $(ps -ef | grep "smbd" | awk '{print $2}'); do kill -9 $pid &> /dev/null; done'
Run Code Online (Sandbox Code Playgroud)
foo 输出:
for pid in $(ps -ef | grep "smbd" | awk {print }); do kill -9 $pid &> /dev/null; done
Run Code Online (Sandbox Code Playgroud)
$2是迷失在外面。
预期输出:
for pid in $(ps -ef | grep "smbd" | awk '{print $2}'); do kill -9 $pid &> /dev/null; done
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到它?