Linux常用命令

Linux常用命令

一、系统信息与监控

1. uptime

查看系统运行时间及负载情况。

1
2
$ uptime
10:30:01 up 15 days, 3:22, 2 users, load average: 0.08, 0.03, 0.05
  • 输出说明:当前时间、运行时间、登录用户数、1/5/15分钟的平均负载(CPU 负载)。

2. top / htop

实时监控系统资源使用情况。

1
2
3
$ top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 root 20 0 245628 45892 2344 R 45.3 2.1 0:15.89 java
  • 关键操作:按 P(CPU 排序)、M(内存排序)、q 退出。

3. df / du

  • **df -h**:查看磁盘空间使用情况。
    1
    2
    3
    $ df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda1 50G 32G 16G 67% /
  • **du -sh /path**:统计目录大小。
    1
    2
    $ du -sh /var/log
    1.2G /var/log

二、文件与目录操作

4. ls

列出目录内容。

1
2
$ ls -alh  # -a显示隐藏文件,-l详细信息,-h人类可读大小
drwxr-xr-x 2 root root 4.0K Jun 10 10:00 logs

5. find

查找文件。

1
2
$ find /home -name "*.log" -mtime +7  # 查找7天前的日志文件
$ find /var -size +100M # 查找大于100MB的文件

6. grep

文本搜索工具。

1
2
$ grep "ERROR" /var/log/syslog       # 搜索包含"ERROR"的行
$ ps aux | grep nginx # 过滤进程

7. tar / gzip

压缩与解压文件。

1
2
$ tar -czvf backup.tar.gz /data      # 压缩
$ tar -xzvf backup.tar.gz # 解压

三、网络管理

8. netstat / ss

查看网络连接状态。

1
2
$ netstat -tulnp | grep 80           # 查看80端口占用
$ ss -ltn # 更高效的替代命令

9. curl / wget

网络请求与下载。

1
2
$ curl -I http://example.com         # 获取HTTP头信息
$ wget http://example.com/file.zip # 下载文件

10. tcpdump

抓包分析网络流量。

1
$ tcpdump -i eth0 port 80 -w capture.pcap  # 抓取80端口的流量

四、进程管理

11. ps

查看进程状态。

1
$ ps aux | grep nginx                # 显示所有进程详细信息

12. kill

终止进程。

1
2
$ kill -9 1234                       # 强制终止PID为1234的进程
$ pkill -f "python script.py" # 按名称终止进程

13. systemctl

管理系统服务。

1
2
$ systemctl start nginx              # 启动服务
$ systemctl status nginx # 查看服务状态

五、权限管理

14. chmod

修改文件权限。

1
2
$ chmod 755 script.sh                # 设置权限为rwxr-xr-x
$ chmod +x script.sh # 添加可执行权限

15. chown

修改文件所有者。

1
$ chown user:group file.txt          # 修改所有者和组

六、日志分析

16. tail / head

查看文件首尾内容。

1
2
$ tail -f /var/log/nginx/access.log  # 实时跟踪日志
$ head -n 100 file.log # 显示前100行

17. journalctl

查看系统日志(Systemd 系统)。

1
$ journalctl -u nginx --since "2023-06-10"  # 按时间和服务过滤

七、软件包管理

18. APT/YUM/DNF

包管理工具(Debian/RedHat 系)。

1
2
3
$ apt update && apt install nginx    # Debian/Ubuntu
$ yum install httpd # CentOS/RHEL
$ dnf remove php # Fedora/CentOS 8+

八、高级工具

19. awk / sed

文本处理工具。

1
2
$ awk '{print $1}' access.log        # 提取日志第一列(IP地址)
$ sed -i 's/old/new/g' file.txt # 替换文件中的文本

20. crontab

定时任务管理。

1
2
3
$ crontab -e                        # 编辑定时任务
# 每天凌晨备份
0 0 * * * /bin/bash /backup.sh

九、安全相关

21. sudo / su

权限切换。

1
2
$ sudo -u user command              # 以指定用户身份执行命令
$ su - username # 切换用户

总结

以上命令覆盖了运维工程师日常工作的核心场景,包括系统监控、文件操作、网络调试、服务管理等。建议结合以下技巧提升效率:

  • **管道符 |**:组合命令,如 cat file | grep "error"
  • **通配符 * / ?**:快速匹配文件,如 rm *.tmp
  • Tab 补全:减少输入错误。
  • 命令历史Ctrl+R 搜索历史命令。

进阶使用

一、性能分析与调试

1. strace

追踪进程的系统调用(调试程序行为)。

1
2
$ strace -p <PID>               # 追踪正在运行的进程
$ strace -e trace=open,read ls # 仅追踪文件的打开和读取操作

2. lsof

列出系统打开的文件和网络连接。

1
2
$ lsof -i :80                   # 查看占用80端口的进程
$ lsof /var/log/nginx # 查看谁在访问该目录

3. sar

系统性能历史数据分析(需安装 sysstat)。

1
2
$ sar -u 1 5                   # 每1秒采样CPU使用率,共5次
$ sar -n DEV # 查看网络接口流量历史

4. perf

性能分析工具(需安装 linux-tools-common)。

1
2
$ perf top                     # 实时查看系统性能事件
$ perf record -g ./program # 记录程序运行时的调用栈

二、文件与存储高级操作

5. rsync

高效同步文件(支持增量、排除文件)。

1
2
$ rsync -avz --delete /source/ user@remote:/dest/  # 同步并删除目标多余文件
$ rsync -avz --exclude="*.tmp" src/ dst/ # 排除临时文件

6. dd

磁盘读写与备份(谨慎使用!)。

1
2
$ dd if=/dev/sda of=disk.img bs=4M status=progress  # 备份整个磁盘
$ dd if=/dev/zero of=/swapfile bs=1G count=4 # 创建4GB交换文件

7. mount / umount

挂载与卸载文件系统。

1
2
$ mount -t nfs 192.168.1.100:/data /mnt  # 挂载NFS共享
$ mount -o remount,rw / # 以读写模式重新挂载根目录

8. ln

创建硬链接与软链接。

1
2
$ ln -s /path/to/file link_name          # 创建软链接(快捷方式)
$ ln /path/to/file hard_link # 创建硬链接(同一文件实体)

三、网络进阶工具

9. nmap

网络扫描与端口探测。

1
2
$ nmap -sV 192.168.1.1         # 扫描目标主机的服务版本
$ nmap -p 1-1000 192.168.1.10 # 扫描指定端口范围

10. mtr

结合 tracerouteping 的网络诊断工具。

1
$ mtr -r google.com            # 持续分析网络路径的丢包情况

11. iptables / nftables

防火墙规则管理。

1
2
$ iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # 允许SSH访问
$ iptables -L -v -n # 列出所有规则

12. nc (netcat)

网络调试瑞士军刀。

1
2
$ nc -zv 192.168.1.1 80        # 检查端口是否开放
$ nc -l 1234 > file.txt # 监听端口接收文件

四、进程与资源控制

13. nohup

让进程在后台持久运行(忽略挂断信号)。

1
$ nohup ./script.sh > output.log 2>&1 &  # 后台运行并重定向日志

14. cgroups

限制进程资源使用(CPU/内存/磁盘等)。

1
2
# 使用systemd创建cgroup限制内存
$ systemd-run --scope -p MemoryLimit=500M ./memory_hungry_app

15. taskset

绑定进程到特定CPU核心。

1
$ taskset -c 0,1 ./program     # 将程序绑定到CPU0和CPU1

五、文本处理与脚本

16. jq

JSON数据处理工具。

1
$ curl api.example.com | jq '.data[].name'  # 提取JSON中的特定字段

17. xargs

将输入转换为命令参数。

1
2
$ find /tmp -name "*.log" | xargs rm -f     # 批量删除文件
$ ls *.csv | xargs -I {} mv {} /backup/ # 批量移动文件

18. cut / paste

按列切割或合并文本。

1
2
$ cut -d',' -f1,3 data.csv      # 提取CSV文件第1、3列
$ paste file1.txt file2.txt # 并排合并两个文件

六、安全与审计

19. openssl

SSL/TLS证书管理。

1
2
$ openssl s_client -connect example.com:443  # 检查SSL证书详情
$ openssl req -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365 # 生成自签名证书

20. auditctl

审计系统调用(需安装 auditd)。

1
$ auditctl -a always,exit -S open -F path=/etc/passwd  # 监控对/etc/passwd的访问

七、容器与虚拟化

21. docker

容器管理(非原生Linux命令但广泛使用)。

1
2
$ docker ps -a                    # 列出所有容器
$ docker exec -it nginx bash # 进入运行中的容器

22. virsh

管理KVM虚拟机。

1
2
$ virsh list --all               # 列出所有虚拟机
$ virsh start centos7 # 启动指定虚拟机

八、高级技巧与组合命令

1. 快速分析日志

1
2
3
4
5
# 统计HTTP状态码出现次数
$ awk '{print $9}' access.log | sort | uniq -c | sort -nr

# 查找访问量最高的IP
$ awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10

2. 批量重命名文件

1
$ rename 's/\.old$/.new/' *.old    # 将后缀.old改为.new

3. 实时监控多个日志文件

1
$ tail -f /var/log/nginx/*.log    # 同时跟踪多个日志

4. SSH 隧道与端口转发

1
2
3
4
5
# 本地端口转发(访问本地8000即访问远程数据库)
$ ssh -L 8000:localhost:3306 user@remote_host

# 动态端口转发(本地SOCKS代理)
$ ssh -D 1080 user@remote_host

总结

掌握以上命令和技巧后,可应对以下场景:

  • 性能瓶颈分析strace + perf + sar
  • 复杂文本处理awk + jq + xargs
  • 网络故障排查tcpdump + mtr + nmap
  • 自动化运维crontab + rsync + 脚本组合

效率提升建议

  1. 将常用命令封装为别名(alias),例如:
    1
    2
    alias ll='ls -alh'
    alias myip='curl ipinfo.io/ip'
  2. 使用 tmuxscreen 管理远程会话,防止断开连接后任务终止。
  3. 结合 ansiblepuppet 实现批量服务器管理。
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2025 Immanuel
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

微信