ps -e | grep ssh 和ps -aux | grep ssh
时间: 2023-07-12 19:02:56 浏览: 129
两个命令的作用相似,都是用于查找正在运行的包含“ssh”字符串的进程。但是它们的输出略有不同。
`ps -e | grep ssh` 命令列出系统中所有运行的进程,并将这个列表传递给 grep 命令。grep 命令在这个列表中查找包含“ssh”字符串的行,并将结果输出。这个命令的输出将只包含包含“ssh”字符串的进程的部分信息,如进程ID和名称。
而 `ps -aux | grep ssh` 命令列出所有包含用户ID、进程ID、CPU使用率等详细信息的进程列表,并将这个列表传递给 grep 命令。grep 命令在这个列表中查找包含“ssh”字符串的行,并将结果输出。这个命令的输出将包含包含“ssh”字符串的进程的详细信息,如CPU使用率、内存使用率和运行时间等。
相关问题
go 远程登录主机 执行 ps aux | grep -E "named|bgpd|ospfd|zebra" | grep -v grep 并判断返回结果 请举例并解释代码含义
假设需要远程登录的主机地址为 `192.168.1.100`,登录用户名为 `user1`,那么可以使用以下命令:
```
ssh user1@192.168.1.100 "ps aux | grep -E 'named|bgpd|ospfd|zebra' | grep -v grep"
```
这个命令的含义是:
1. 通过 `ssh` 命令远程登录到 `192.168.1.100` 主机,并使用 `user1` 用户名登录。
2. 在远程主机上执行命令 `ps aux`,即查看所有进程的详细信息。
3. 使用 `grep -E 'named|bgpd|ospfd|zebra'` 过滤出包含 `named`、`bgpd`、`ospfd` 或 `zebra` 关键字的行。
4. 使用 `grep -v grep` 再次过滤掉含有 `grep` 关键字的行。
5. 返回符合条件的进程列表。
如果返回结果不为空,则说明远程主机上存在包含 `named`、`bgpd`、`ospfd` 或 `zebra` 关键字的进程。反之,则说明不存在这些进程。可以根据返回结果编写逻辑判断。
golang exec.command 登录主机 执行多条命令 uname -n 和 ps aux | grep "named" | grep -v grep | wc -l命令 并判断返回结果 请举例
好的,以下是一个示例代码:
```go
package main
import (
"fmt"
"os/exec"
"strings"
)
func main() {
// 连接的主机地址和用户名
host := "example.com"
user := "username"
// 登录主机执行的命令
cmds := []string{"uname -n", "ps aux | grep 'named' | grep -v grep | wc -l"}
// 构建 SSH 连接命令
sshCmd := fmt.Sprintf("ssh %s@%s \"%s\"", user, host, strings.Join(cmds, ";"))
// 执行 SSH 连接命令
output, err := exec.Command("bash", "-c", sshCmd).Output()
if err != nil {
fmt.Println("执行命令失败:", err)
return
}
// 解析命令输出
results := strings.Split(strings.TrimSpace(string(output)), "\n")
if len(results) != 2 {
fmt.Println("命令输出不符合预期")
return
}
// 获取命令执行结果
uname := results[0]
namedCount := strings.TrimSpace(results[1])
// 打印结果
fmt.Printf("主机名:%s\n", uname)
fmt.Printf("named 进程数量:%s\n", namedCount)
if namedCount != "0" {
fmt.Println("named 进程正在运行")
} else {
fmt.Println("named 进程未运行")
}
}
```
这个示例代码连接到 `example.com` 主机,使用 `username` 用户名登录,然后依次执行 `uname -n` 和 `ps aux | grep 'named' | grep -v grep | wc -l` 命令,并且判断 `named` 进程的数量是否为 0。最后打印出主机名和 `named` 进程数量,以及进程是否运行的信息。