ps aux | grep 'process_name' | awk '{print $2}' 如何去掉grep本身
时间: 2023-08-03 21:06:10 浏览: 50
可以使用`grep -v 'grep'`来过滤掉含有`grep`的行,即:
```
ps aux | grep 'process_name' | grep -v 'grep' | awk '{print $2}'
```
这样就能够只输出`process_name`的进程ID了。
相关问题
linux超市管理系统shell脚本
很抱歉,根据提供的引用内容,没有找到关于Linux超市管理系统的shell脚本。但是,可以根据提供的引用内容为您介绍Linux系统下的用户管理脚本和常见的监控需求及其shell脚本的编写。
1. Linux系统下的用户管理脚本
以下是一个简单的Linux系统下的用户管理脚本,可以用于添加、删除和修改用户信息:
```shell
#!/bin/bash
# 添加用户
add_user() {
read -p "请输入用户名: " username
read -p "请输入用户密码: " password
read -p "请输入用户家目录: " home_dir
read -p "请输入用户描述: " user_desc
useradd -d $home_dir -c "$user_desc" $username
echo $password | passwd --stdin $username
echo "用户 $username 添加成功!"
}
# 删除用户
del_user() {
read -p "请输入要删除的用户名: " username
userdel -r $username
echo "用户 $username 删除成功!"
}
# 修改用户密码
modify_password() {
read -p "请输入要修改密码的用户名: " username
read -p "请输入新密码: " password
echo $password | passwd --stdin $username
echo "用户 $username 密码修改成功!"
}
# 修改用户家目录
modify_home_dir() {
read -p "请输入要修改家目录的用户名: " username
read -p "请输入新的家目录: " home_dir
usermod -d $home_dir $username
echo "用户 $username 家目录修改成功!"
}
# 修改用户描述
modify_user_desc() {
read -p "请输入要修改描述的用户名: " username
read -p "请输入新的用户描述: " user_desc
usermod -c "$user_desc" $username
echo "用户 $username 描述修改成功!"
}
# 主菜单
while true
do
echo "========================="
echo " Linux用户管理脚本"
echo "========================="
echo "1. 添加用户"
echo "2. 删除用户"
echo "3. 修改用户密码"
echo "4. 修改用户家目录"
echo "5. 修改用户描述"
echo "6. 退出"
echo "========================="
read -p "请输入选项: " choice
case $choice in
1)
add_user
;;
2)
del_user
;;
3)
modify_password
;;
4)
modify_home_dir
;;
5)
modify_user_desc
;;
6)
exit 0
;;
*)
echo "无效选项,请重新输入!"
;;
esac
done
```
2. 常见的监控需求及其shell脚本的编写
以下是Linux系统下几种常见的监控需求及其shell脚本的编写:
- 检查进程是否存在
```shell
#!/bin/bash
process_name="nginx"
if ps aux | grep -v grep | grep $process_name > /dev/null
then
echo "$process_name 进程已经运行!"
else
echo "$process_name 进程未运行!"
fi
```
- 检测进程CPU利用率
```shell
#!/bin/bash
process_name="nginx"
cpu_usage=$(ps aux | grep -v grep | grep $process_name | awk '{print $3}')
if [ -z "$cpu_usage" ]
then
echo "$process_name 进程未运行!"
else
echo "$process_name 进程CPU利用率为 $cpu_usage%。"
fi
```
- 检测进程内存使用量
```shell
#!/bin/bash
process_name="nginx"
mem_usage=$(ps aux | grep -v grep | grep $process_name | awk '{print $4}')
if [ -z "$mem_usage" ]
then
echo "$process_name 进程未运行!"
else
echo "$process_name 进程内存使用量为 $mem_usage%。"
fi
```
centos7写一个监控系统的shell,要求如下 cpu使用率超过80%(Shell变量单独配置)并且持续60秒钟(Shell变量单独配置)以上使用Curl post json方式调用http://192.168.220.1:18181/jeecg-boot/luodiye/sendMsg接口,传入以下JSON信息 服务器ip(Shell变量单独配置)+当前CPU使用率+持续时间+CPU占用率最高的前3个进程名字以及文件路径 硬盘使用率超过90%(Shell变量单独配置)并且持续90秒钟(Shell变量单独配置)以上使用Curl post json方式调用http://192.168.220.1:18181/jeecg-boot/luodiye/sendMsg接口,传入以下JSON信息 服务器ip(Shell变量单独配置)+当前硬盘使用率+持续时间+磁盘占用最大的3个文件以及大小(以KB、GB、TB等为单位,精确到1位小数)和文件路径 内存使用率超过70%(Shell变量单独配置)并且持续70秒钟(Shell变量单独配置)以上使用Curl post json方式调用http://192.168.220.1:18181/jeecg-boot/luodiye/sendMsg接口,传入以下JSON信息 服务器ip(Shell变量单独配置)+当前内存使用率+持续时间+内存占用率最高的前3个进程名字以及文件路径 脚本持续监控,每隔N秒(Shell变量单独配置)执行一次,要求直接给出最完美的shell代码,仔细检查可能存在的语法错误,必需交付准确无错误的代码,一次性说完,无需任何解释
```
#!/bin/bash
# 配置参数
cpu_threshold=80
cpu_duration=60
disk_threshold=90
disk_duration=90
memory_threshold=70
memory_duration=70
interval=10
ip="192.168.220.1"
port="18181"
path="/jeecg-boot/luodiye/sendMsg"
url="http://$ip:$port$path"
# 监控函数
monitor() {
local threshold=$1
local duration=$2
local resource=$3
local process=$4
local process_command="ps aux --sort=-%cpu | awk '{print \$0\" \"NR}' | grep -v 'awk' | awk '\$11>$threshold {print \$0}' | head -3"
local resource_command="awk '\$1>$threshold {print \$0}' /proc/stat | awk '{print \$1}' | awk '{s+=$1} END {print s/4}'"
while :; do
local count=0
local process_name=''
local process_path=''
local resource_percent=0
local resource_percent_duration=0
while :; do
# 获取当前资源使用率
resource_percent=$(eval $resource_command)
if [ $(echo "$resource_percent > $threshold" | bc) -eq 1 ]; then
let count++
resource_percent_duration=$count
sleep 1
else
count=0
resource_percent_duration=0
fi
# 获取当前占用资源最高的前3个进程
process_name=$(eval $process_command | awk '{print $11}')
process_path=$(eval $process_command | awk '{print $12}')
# 超过阈值且持续时间超过设定值,发送请求
if [ $count -ge $duration ]; then
local data="{\"server_ip\":\"$(hostname -I)\",\"resource\":\"$resource\",\"resource_percent\":\"$resource_percent\",\"duration\":\"$resource_percent_duration\",\"process_name\":\"$process_name\",\"process_path\":\"$process_path\"}"
curl -H "Content-Type: application/json" -X POST -d $data $url
exit
fi
done
done
}
# 启动监控
monitor $cpu_threshold $cpu_duration "cpu" "ps aux --sort=-%cpu | awk '{print $0\" \"NR}' | grep -v 'awk' | awk '\$11>$cpu_threshold {print $0}' | head -3" &
monitor $disk_threshold $disk_duration "disk" "du -a / 2