ps –aux | grep bash
时间: 2023-11-25 17:12:39 浏览: 43
这个命令会列出所有正在运行的bash进程。具体来说,ps命令会显示所有进程的详细信息,而管道符号“|”则会将这些信息传递给grep命令进行过滤。grep命令会搜索包含“bash”关键字的行,并将它们显示出来。
其中,ps命令的选项-aux表示列出所有进程的完整信息,包括进程ID、进程所有者、CPU占用率、内存使用情况等。而grep命令的“bash”关键字则表示搜索包含“bash”的行。因此,ps –aux | grep bash命令的作用就是列出所有正在运行的bash进程的详细信息。
相关问题
父子进程间通信, 实现ps aux | grep bash 使用execlp函数和dup2函数
父子进程间通信可以使用管道(pipe)来实现。具体步骤如下:
1. 创建一个管道,使用pipe函数。
2. 创建子进程,使用fork函数。
3. 在子进程中,使用dup2函数将标准输出重定向到管道的写端,关闭管道的读端。
4. 在子进程中,使用execlp函数执行grep bash命令。
5. 在父进程中,关闭管道的写端,使用dup2函数将标准输入重定向到管道的读端。
6. 在父进程中,使用execlp函数执行ps aux命令。
7. 等待子进程结束,使用wait函数。
具体实现代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main()
{
int fd[2];
pid_t pid;
if (pipe(fd) == -1) {
perror("pipe");
exit(EXIT_FAILURE);
}
pid = fork();
if (pid == -1) {
perror("fork");
exit(EXIT_FAILURE);
}
if (pid == 0) { // 子进程
close(fd[0]); // 关闭管道的读端
dup2(fd[1], STDOUT_FILENO); // 将标准输出重定向到管道的写端
execlp("ps", "ps", "aux", NULL);
exit(EXIT_FAILURE);
} else { // 父进程
close(fd[1]); // 关闭管道的写端
dup2(fd[0], STDIN_FILENO); // 将标准输入重定向到管道的读端
execlp("grep", "grep", "bash", NULL);
wait(NULL); // 等待子进程结束
exit(EXIT_SUCCESS);
}
return 0;
}
```
#!/bin/bash pn=$(ps aux|grep -v grep|grep sshd|wc -l) [ -d /var/run/sshd ] || mkdir /var/run/sshd chmod 744 /var/run/sshd if [ "${pn}" != "0" ]; then pid=$(ps aux|grep -v grep|grep /usr/sbin/sshd|awk '{print $2}') kill $pid fi /usr/sbin/sshd -D
这是一个 Shell 脚本,主要功能是检查 sshd 服务是否已经启动,如果已经启动,则杀掉当前进程,并重新启动 sshd 服务。如果 sshd 服务没有启动,则创建一个 /var/run/sshd 目录,并设置权限,然后启动 sshd 服务。
具体实现细节如下:
1. `pn=$(ps aux|grep -v grep|grep sshd|wc -l)` 这一行命令是用来检查当前系统中是否有 sshd 进程在运行。首先使用 `ps aux` 命令获取当前系统中所有进程的信息,然后使用 `grep` 命令过滤掉其中包含关键字“grep”的行,再使用 `grep sshd` 过滤出包含关键字“sshd”的行,最后使用 `wc -l` 统计行数,得到 sshd 进程的数量,并将其存储在变量 `pn` 中。
2. `[ -d /var/run/sshd ] || mkdir /var/run/sshd` 这一行命令是用来检查 /var/run/sshd 目录是否存在。如果该目录不存在,则使用 `mkdir` 命令创建该目录。
3. `chmod 744 /var/run/sshd` 这一行命令是用来设置 /var/run/sshd 目录的权限为 744,即所有者具有读、写、执行权限,组和其他用户只有读权限。
4. `if [ "${pn}" != "0" ]; then` 这一行命令是用来判断是否有 sshd 进程在运行。如果有,则执行下面的命令,杀掉当前 sshd 进程。
5. `pid=$(ps aux|grep -v grep|grep /usr/sbin/sshd|awk '{print $2}')` 这一行命令是用来获取当前运行的 sshd 进程的 PID。首先使用 `ps aux` 命令获取当前系统中所有进程的信息,然后使用 `grep` 命令过滤掉其中包含关键字“grep”的行,再使用 `grep /usr/sbin/sshd` 过滤出包含关键字“/usr/sbin/sshd”的行,最后使用 `awk '{print $2}'` 提取出 PID,并将其存储在变量 `pid` 中。
6. `kill $pid` 这一行命令是用来杀掉当前 sshd 进程。
7. `/usr/sbin/sshd -D` 这一行命令是用来启动 sshd 服务,并使其在前台运行。其中 `-D` 参数表示以调试模式启动 sshd 服务。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)