这是一篇 2020 年 2 月整理的 Linux 命令笔记。内容按当年的视角写就:CentOS 7 系统、firewalld 防火墙、chkconfig 管理开机启动、ImageMagick 处理图片——没有 systemd 全家桶,也没有后来的
fd/ripgrep。命令、写法都保留当年的风格,作为一份可以直接查的运维速查表。
SSH 免登录与修改主机名
配置 root 用户 SSH 免密登录:
- 在想要免登录的服务器上,进入 root 文件夹创建
.ssh目录:mkdir -p ~/.ssh - 把客户端机器的
id_rsa.pub文件拷贝到服务器的.ssh目录下 - 在
.ssh目录下创建authorized_keys文件,内容保存id_rsa.pub的内容:
mkdir -p ~/.ssh
scp ~/.ssh/id_rsa.pub root@server-ip:~/.ssh/
ssh root@server-ip
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
注意:
authorized_keys与.ssh目录的权限必须收紧(600 / 700),否则 SSH 会拒绝信任该密钥。
修改主机名:
vim /etc/hostname # 将主机名写入文件
reboot # 重新启动服务器生效
查找:日志、关键字与文件
按时间段查询日志
sed -n '/16:17:20/,/16:17:36/p' test.log # 输出 16:17:20 到 16:17:36 之间的日志行
grep 查询关键字及上下文
grep '我的业绩' -A10 -B5 # 打印匹配行,以及之后 10 行(-A after)与之前 5 行(-B before)
find 按条件查找文件
| 参数 | 含义 | 示例 |
|---|---|---|
-name | 按名称精确匹配 | find /usr -name 'redis-*' -maxdepth 1 |
-iname | 忽略大小写匹配 | find /usr -iname 'a.java' |
-maxdepth | 限制查找目录深度 | find /usr -name 'redis-*' -maxdepth 1 |
-ctime | 修改时间(天) | find /usr -ctime 20 找 20 天内有修改的文件 |
-mtime | 修改时间(天,前后匹配) | find /usr -mtime -2 找更新时间小于 2 天的文件 |
-mmin | 修改时间(分钟) | find /usr -mmin +2 找更新时间大于 2 分钟的文件 |
-size | 按文件大小 | find /usr -size -10G 小于 10G;find /usr -size +5k 大于 5k |
-empty | 空文件或目录 | find /usr -empty |
-type | 按类型(d 目录 / f 文件) | find /usr -type d、find /usr -type f |
-newer | 比某文件更新时间新 | find /usr -newer abc |
-anewer | 比某文件访问时间新 | find /usr -anewer abc |
grep 多文件 + awk 结构化查询
grep "imooc" target* # 在 target 打头的文件中查找包含 imooc 的行
awk -F ',' '$1==500 && $2==999 {print $0}' a.txt
awk示例说明:以逗号分隔a.txt每一行,找出第一列等于 500 且第二列等于 999 的行,$0表示打印整行。
组合命令
找到指定文件并删除
find . -name 'a_*' -exec rm -rf {} \;
find . -name 'a_*' | xargs rm -rf
rm -rf $(find . -name 'a_*')
三种写法殊途同归,按习惯选用。
找到指定进程号并 kill
ps -ef | grep xxx | grep -v "grep" | awk '{print $2}' | xargs kill -9
kill -9 $(ps -ef | grep xxx | grep -v "grep" | awk '{print $2}')
grep -v "grep"用于过滤掉 grep 自身那条进程,避免误杀。
端口与防火墙(CentOS 7)
firewall-cmd --query-port=8020/tcp # 查询端口号是否开放
firewall-cmd --add-port=8020/tcp --permanent # 开放端口(--permanent 表示永久生效)
firewall-cmd --reload # 重启防火墙使配置生效
firewall-cmd --state # 查看防火墙状态
systemctl stop firewalld.service # 关闭防火墙(重启后会重新启动)
systemctl disable firewalld.service # 永久关闭:先禁用开机启动
永久关闭防火墙:先
systemctl disable firewalld.service禁用开机自启,再systemctl stop firewalld.service停止当前服务。
磁盘与内存
du -sh /dir # 查看文件夹总大小
du -sh fileName # 查看某一个文件的大小
du -h /dir # 查看文件夹及其内部每个文件的大小
free # 查看内存和交换空间使用情况
df -h # 查看各个分区磁盘空间使用
cat /proc/meminfo | grep MemTotal # 查询机器内存
ulimit -u # 查看当前用户能创建的最大线程数
root 用户一般没有最大线程数限制,所以避免用 root 部署应用——一旦耗尽系统资源,机器可能连远程管控都进不去。
安装包与端口检查
rpm -qa | grep jdk # 查看是否安装了 JDK
rpm -e --nodeps xxx # 卸载程序(如卸载 JDK,--nodeps 忽略依赖关系)
netstat -ntpl | grep 22 # 查看 22 端口是否在监听
systemctl restart network.service # 重启网络服务
chkconfig --list # 查看开机启动服务列表
开机启动
方式一:chkconfig 设置开机自启
chkconfig fdfs_trackerd on
方式二:编辑 rc.local
vim /etc/rc.d/rc.local
# 加入一行:
/etc/init.d/fdfs_trackerd start
方式三:systemctl(以 docker 为例)
systemctl is-enabled docker.service # 检查服务是否开机启动
systemctl enable docker.service # 配置成开机启动
systemctl start docker.service # 启动服务
systemctl disable docker.service # 禁止开机启动
systemctl stop docker.service # 停止
systemctl restart docker.service # 重启
切换图形/命令行界面
sudo systemctl set-default multi-user.target # 非图形界面启动
sudo systemctl set-default graphical.target # 切换回图形界面
其他常用命令
mount /dev/cdrom /mnt/cdrom # 加载光驱,之后进入 /mnt/cdrom 读取光盘内容
umount /mnt/cdrom # 卸载光驱
passwd qimeng # 修改用户密码
hostname # 查看主机名
hostname [name] # 设置主机名
图片批处理(ImageMagick)
安装:
yum install ImageMagick -y
批量生成缩略图——缩小 25%:
for img in `ls *.jpg` ; do convert -sample 25%x25% $img thumb-$img ; done
指定宽度等比缩放:
for img in `ls *.jpg` ; do convert -sample 200 $img thumb-$img ; done
指定高度等比缩放:
for img in `ls *.jpg` ; do convert -sample x200 $img thumb-$img ; done
批量缩小根目录文件夹中的图片,宽度大于 900px 才缩小,否则不动:
for img in `ls */*.jpg` ; do convert -resize "900 >" $img $img ; done
convert -sample不做插值、速度快,适合缩略图;convert -resize "900 >"是「只有宽度超过 900 才缩放」的写法。
速查小结
- 免密登录:客户端
id_rsa.pub→ 服务器~/.ssh/authorized_keys,权限 600/700。 - 查日志:
sed -n '/起/,/止/p';查上下文:grep -A -B。 - 查文件:
find按-name/-size/-mtime/-type组合;删除用-exec或xargs。 - 杀进程:
ps -ef | grep | awk '{print $2}' | xargs kill -9。 - 防火墙:
firewall-cmd --add-port=xxx --permanent+--reload。 - 磁盘内存:
du -sh/df -h/free。 - 开机自启:
systemctl enable或chkconfig on或写入rc.local。