对于每个参数,脚本检查是否存在具有此类用户名的用户。如果存在脚本打印此用户运行的所有进程
#!/bin/bash
if [ $# -ne 1 ]
then
echo "Script Should Have Atleast 1 Parameter"
exit
fi
USER=$1
echo $USER
if [ $? -eq 0 ]
then
echo " Yes the User Exists"
else
echo "No , The User Doesnt Exists"
fi
我的问题是无论我给出什么输入,它都显示用户存在。任何人都可以建议我打印出该用户运行的所有进程的命令我应该使用 awk 还是 grep
回答
好吧,首先,您不是在检查用户是否存在,而是最终检查命令是否echo $USER没有失败。您将需要实施适当的用户检查。
如何检查任意用户是否存在的好方法是这样的,使用 command id。
if id "${1}" &> /dev/null; then
echo 'user found'
else
echo 'user not found'
fi
接下来您要列出属于该用户的所有进程。您将需要ps. 有很多方法ps可以格式化输出。请务必查看 的手册页ps。下面是一个示例,它列出了属于用户的所有进程的命令和pid "$1"。
ps -eo pid,comm --user $(id -u "${1}")
最后,运行 check usingid和然后才使用psfor 进程列表至少是低效的。在您的用例中,您可以简单地运行ps并检查它是否成功。如果没有,您可以显示未找到用户的警告。
#!/bin/bash
if ! ps -u "$1" 2> /dev/null; then
echo 'user not exists!'
exit 1
fi
THE END
二维码