Linux 基础命令系列(一):用户、用户组、权限、less、tail、grep、入门
查看服务器基本状态。
·
Linux 基础命令系列(一)
紧接《CentOS 7.9.2009 服务器“体检”速查表》查看服务器基本状态
用户,目录,权限
1. 新建用户组
# 1. 创建业务组,GID 从 2000+ 开始,避免与系统组冲突
groupadd -g 2000 log
# 2. 如需后续改组名,可重用 -n 选项,把log 改为logn
groupmod -n logn log
# 3. 查看系统当前所有组
cat /etc/group | grep -E '^logn|wheel'
# 4. 删除空组(无用户将其作为主组)
groupdel log
已有用户追加到附加组(不覆盖)
usermod -aG docker,logn log001 ## 把 log001 加入 docker、logn 两个附加组
从组里移除(如需)
gpasswd -d log001 logn
2. 给用户组赋予权限
在 Linux 里,“权限”直接作用对象是文件/目录,而不是“组”本身。
因此“给用户组赋予权限”的真实步骤是:
把目录或文件的属组改成目标组;
给这个组打上读/写/执行位;
需要时加 SGID 或 ACL,让后续文件继承或更细粒度控制。
场景 1:组只读,其他人没权限
chown root:logn /home/logs # 只有 root 能写,logn 组可读可进目录,其他人完全禁止。
chmod 750 /home/logs # rwxr-x---
777 与 rwx的关系
750 就是 “把 rwx 拆成 3 段数字”,每段对应 owner|group|other 的 读-4 写-2 执行-1 累加和。
- 数字→字母对照表
| 权限 | 字母 | 分值 | 二进制位 |
|---|---|---|---|
| 读 | r | 4 | 100 |
| 写 | w | 2 | 010 |
| 执行 | x | 1 | 001 |
7 = 4+2+1 = rwx → 属主(owner)
5 = 4+0+1 = r-x → 属组(group)
0 = 0+0+0 = — → 其他人(other)
- 常见“三位数”速查
| 数字 | 字母 | 场景 |
|---|---|---|
| 777 | rwxrwxrwx | 开放过度,永远不要给 |
| 755 | rwxr-xr-x | 可执行脚本、目录浏览 |
| 750 | rwxr-x— | 组内读/进,其他人看不见 ← 本文推荐 |
| 700 | rwx------ | 仅自己可见,私钥、备份 |
| 644 | rw-r–r– | 普通文本文件 |
| 600 | rw------- | 敏感文件,如 ~/.ssh/id_rsa |
3. 新建用户:最小权限原则
# 1. 创建用户 & 家目录
useradd -m -s /bin/bash log001
-m 强制创建家目录;-s 指定登录 Shell,用户执行cd ~ 会进入/home/log001 目录下
# 2. 设密码(交互式)
passwd log001
交互式修改密码;root 可改任意用户,普通用户只能改自己。
# 3. 把用户加入常用附加组(举例)
usermod -aG wheel,nginx log001# wheel 用于 sudo,nginx 组方便看日志
# 4. 创建用户并加入logn组
useradd -m -s /bin/bash -G logn log001
易踩坑
- 漏
-m导致 没有家目录,~会变成/。
2. 目录与授权:让日志可“读”不可“写”
# 1. 创建项目目录,包括多个层级,多个目录
mkdir -p /var/log/webapp /opt/webapp/{conf,scripts}
# 2. 目录授权:本人全权限,组只读,其它人无权限
chown -R alice:nginx /opt/webapp
chmod -R 750 /opt/webapp
# 3. 日志目录允许组内读
chown -R log001:logn /var/log/webapp
chmod -R 750 /var/log/webapp
小技巧
chmod 2750 dir加 SGID 位,以后该目录下新建文件自动继承目录属组,方便多人协作。
3. 切换身份 & 定位目录
# 1. 完整登录式 Shell(加载 ~/.bash_profile)
su - log001
# 2. 看我在哪,shell当前的目录
pwd
# 3. 一键到日志目录
cd /var/log/webapp
易踩坑
- 用
su alice不加-会保留原环境变量,PATH可能找不到自定义脚本。
4. ps:先把“现场”拍下来
# 1. 经典全格式,带树状关系
ps auxf
# 2. 只看某用户进程
ps -U alice -f
# 3. 把结果存文件,待会儿 less 着看
ps -ef > /tmp/ps_snapshot.log
# 4. 查看所有java相关的进程
ps -ef|grep java ( System-V 风格)
ps auxf|grep java (BSD 风格)
# 5. 一眼看“谁最吃 CPU”——静态快照,前5
ps auxf --sort=-%cpu | head -5
选项速记
a所有终端u用户格式x无终端进程;-f全格式,能看到 PPID,方便追溯父进程。
5. grep:大海捞“针”
| 参数 | 全称记忆 | 作用 | 一句话示例 |
|---|---|---|---|
-i |
ignore-case | 忽略大小写 | grep -i error *.log |
-n |
number | 显示行号 | grep -n 'timeout' config.yml |
-c |
count | 只统计匹配行数 | grep -c '^200' access.log |
-e |
regexp | 多模式(或关系) | grep -e 500 -e 404 *.log |
-a |
binary-as-text | 把二进制当文本搜 | grep -a 'PNG' image.bin |
-b |
byte-offset | 打印匹配字节偏移 | grep -b 'password' dump.bin |
# 在文件中精确查找关键字seq0000001
grep seq0000001 /var/log/messages
# 1. 忽略大小写,显示行号,高亮关键词 . E正则扩展同时查找error和fatal,i不区分大小写,n显示行号
grep -Ein 'error|fatal' /var/log/messages
# 2. 递归目录,只列文件名 R递归,l显示文件名称
grep -Ril 'OutOfMemory' /opt/webapp/logs/
# 3. 结合 ps 实时过滤 (ps -ef 查找所有进程,并排除自身grep 命令,筛选出ngixn相关进程)
ps -ef | grep -v grep | grep nginx
进阶组合
grep -C 3 'Exception'把匹配行的 上下 3 行 一起输出,方便看堆栈。
6. less:可回滚、可搜索、不加载全文
# 1. 直接查看大文件
less /var/log/webapp/app.log
# 2. 打开即定位到 50% 位置
less +50p app.log
# 3. 打开后搜索
# /ERROR 向下搜
# ?ERROR 向上搜
# n / N 下一个/上一个匹配
# F 实时模式(像 tail -f)
快捷键一图流空格 下一屏、b 上一屏、g 首页、G 尾页、q 退出。
7. tail:盯紧“尾巴”
# 1. 看最后 200 行
tail -n 200 app.log
# 2. 实时追踪新增(最常用的 -f)
tail -f app.log
# 3. 多文件同时追
tail -f /var/log/{messages,dmesg,app.log}
进阶技巧
tail -F文件被 rotate 后自动 reopen,适合日志切割场景。- 与
grep联动,只刷 ERROR:tail -F app.log | grep --line-buffered ERROR
8. 一条龙实战:定位“狂刷日志”的进程
# 1. 找到最吃 CPU 的 Java 进程
ps -eo pid,ppid,%cpu,cmd | grep java | sort -k3 -nr | head
# 2. 假设 PID 是 12345,看它打开的文件(含日志)
lsof -p 12345 | grep '.log'
# 3. 实时盯该日志,只看 ERROR 或 Exception
tail -F /opt/webapp/logs/stdout.log | grep -E 'ERROR|Exception' --line-buffered | tee review.log
解释:
tee一边屏幕输出,一边落盘,后续可less review.log慢慢复盘。
9. 小结
| 命令 | 典型场景 | 务必记住的选项 |
|---|---|---|
| ps | 拍“现场快照” | auxf / -ef |
| grep | 过滤/定位关键字 | -i 忽略大小写,-C 上下文 ,-E 正则匹配 |
| less | 静态/可搜索/可回滚 | F 实时模式,/关键词 搜索,n/N 前后一个,g/G第一行最后一行 |
| tail | 实时刷日志 | -F 日志轮替场景更稳 |
下一篇《基础命令系列(二)》玩一玩 find、xargs、awk、sort | uniq -c,把“查找 + 统计 + 格式化”一条龙打通。
更多推荐



所有评论(0)