【进程】PID进程ID

哎呀,你正在教我有关 Linux 内核的课程。
作为一个像我这样的应用程序爱好者,我通常只看 pid 和 tid,这确实没有太多深入的信息。
然而,最近我确实遇到了一些与这些概念相关的事情。

去年夏天,我在公司的旧服务器上部署了一个新应用程序。
服务器上正在运行多个服务,其中一项服务由于错误而被卡住。
我一看,进程ID(PID)是1 2 3 4 5 我想,这东西卡住了,需要重新启动。
然后我使用命令kill -9 1 2 3 4 5 来结束该进程。
结果禁用后服务仍然无法启动。
相反,我们发现另一个进程 ID 为 1 2 3 4 6 的进程也随之挂起。
当时我很困惑。
这两个过程并不相同。
他们为什么一起挂了电话?
然后查了资料,发现1 2 3 4 5 和1 2 3 4 6 其实是在同一个进程组(PGID)下的。
由于服务是单线程的,所以PID和TID是相同的。
然后我使用kill -9 %PGID命令杀死整个进程组,然后重新启动服务。
这个问题让我更深入的了解了进程组和PID之间的关系,以及%PGID命令的巨大用途。

我们来谈谈对话和作业吧。
我使用 SSH 远程登录服务器并打开几个终端窗口,每个窗口运行不同的命令。
有一天,我发现在一个窗口中运行的脚本卡住了。
我用ps命令在另一个窗口查看,看到那个脚本对应的PID是6 7 8 9 0,当时我以为这个脚本卡住了,只好杀掉它。
我刚刚杀掉了-9 6 7 8 9 0,发现脚本没有被杀掉但是整个会话被中断了。
当时我就很困惑,杀掉一个进程怎么能打断整个会话呢?
后来我了解到该脚本是在一个会话中运行的,并且引导该会话的进程的PID是会话ID(SID)。
当时我直接杀掉了该进程,相当于杀掉了该会话的组长进程,于是整个会话就中断了。
这次事件让我了解了会话和作业的概念以及控制终端在其中的作用。

关于PID的应用,我没接触过这个领域,不敢乱说。
但是,我认为这将在进程启动时由内核自动分配。
我们这些参与申请的人通常不必担心这一点。

综上所述,虽然Linux内核的这些概念有点复杂,但一旦理解了,对于日常操作以及维护和故障排除仍然非常有用。

linux进程id是多少位

那天,我查看公司服务器上的进程列表,突然发现了一个PID为3 2 7 6 8 的进程,我发现这个数字很有趣,似乎是一个分界点。
等等,还有一件事。
我记得看过一些文章说Linux进程ID是3 2 位的。
那么这个数字3 2 7 6 8 是什么意思呢?

shell脚本的四种执行方式(shell脚本执行shell脚本)

上周有客户问我如何在Linux中运行一个shell脚本,以便在用户登录时自动启动一个bash,并且这个bash有一个全局唯一的进程ID。
我向他解释说我们首先需要创建一个shell脚本,比如test.sh。

bash !/bin/bash echo "欢迎使用系统"
接下来,需要设置这个脚本文件的执行权限:
bash chmod +x test.sh
那么有两种方法可以运行这个脚本:
1 直接在当前目录运行:
bash ./test.sh
2 .使用bash命令:
bash bash 测试.sh
或者以更简洁的方式:
bash sh 测试.sh
使用 sh 和 bash 的区别在于 sh 不像 bash 那样创建新的 shell 环境。
这意味着 sh 中定义的变量在脚本执行后不会保留,而 bash 中定义的变量则会保留。

至于你提到的source命令,它用于在当前shell中运行脚本,并不会创建新的shell环境,因此脚本中定义的变量将保留在当前shell中。

关于安装SSH服务,可以使用以下命令检查是否已安装:
bash rpm-qa| grep 嘘
如果没有安装,可以使用以下命令安装:
bash sudo yum install openssh-server
安装完成后,启动SSH服务:
bash sudo systemctl 启动 sshd
最后,关于在shell脚本中运行多个命令的方法,可以在脚本中使用分号来分隔多个命令:
bash 回声“你好”;回声“世界”
这样,每个命令都会被执行,但它们的执行结果不会互相影响。

无论如何,这取决于你,这些方法必须满足你的需求。
我还在考虑中,如果还有其他问题,请随时问我。