Linux运维与开发实战命令大全

2026-01-02 12:56:11 · 作者: AI Assistant · 浏览: 5

Linux系统中包含数百个命令,其中一些是日常运维和开发中不可或缺的工具。本文将详细介绍150个常用命令,涵盖文件管理、文本处理、进程控制、系统监控、用户管理等多个领域,为初学者和开发者提供实用指南和最佳实践。

Linux作为一款开源操作系统,其命令行工具是高效管理与开发的核心。无论是日常运维还是软件开发,掌握一系列核心命令对于提升工作效率、保障系统稳定性都至关重要。本文将从文件操作文本处理系统监控网络工具用户管理进程控制等多个维度,深入解析这些命令的功能、使用场景及最佳实践,为初学者和开发者提供系统性的参考。

文件与目录操作命令

文件与目录是Linux系统中最基本的元素,管理它们的命令是日常操作的核心。以下是一些常用的文件和目录操作命令,它们在系统维护和开发中频繁使用。

ls:列出目录内容

ls命令用于列出目录中的文件和子目录。它提供了丰富的参数,如-l用于显示详细信息,-a显示隐藏文件。

ls -l  # 显示详细列表
ls -a  # 显示所有文件,包括隐藏文件

cd:切换目录

cd用于切换当前工作目录。使用~可以切换到用户的家目录,.表示当前目录,..表示上一级目录。

cd /home/user  # 切换至绝对路径
cd ..          # 切换至上一级目录
cd ~           # 切换至用户家目录

mkdir:创建目录

mkdir用于创建新的目录。可以一次创建多个目录,也可以使用-p递归创建嵌套目录。

mkdir new_dir  # 创建单个目录
mkdir -p dir1/dir2/dir3  # 递归创建多级目录

touch:创建空文件或更新文件时间

touch命令可以创建一个空文件,或者更新已有文件的访问时间和修改时间。它是开发和运维中处理文件状态的重要工具。

touch new_file  # 创建新文件
touch existing_file  # 更新文件时间

rm:删除文件或目录

rm用于删除文件或目录。若删除目录,需使用-r参数进行递归删除,同时使用-f参数防止提示信息。

rm file.txt    # 删除文件
rm -r dir      # 删除目录及其内容
rm -rf dir     # 强制删除目录及其内容

rmdir:删除空目录

rmdir用于删除空目录。若目录不为空,需使用rm -r或其他工具进行删除。

rmdir empty_dir  # 删除空目录

find:查找文件

find命令用于在指定目录下查找文件或目录。它支持多种条件匹配,例如文件名、大小、修改时间等。

find /path/to/dir -name "file.txt"  # 查找文件名匹配的文件
find /path/to/dir -size +10M        # 查找大于10MB的文件

tree:以树状图显示目录结构

tree命令可以以树状结构显示目录中的所有文件和子目录,帮助用户快速浏览目录内容。在某些系统中可能需要安装。

tree /path/to/dir  # 显示指定目录的树状结构

basenamedirname:处理文件路径

basename用于获取文件名,dirname用于获取文件路径的目录部分。这两个命令常用于脚本编写中,以处理文件路径信息。

basename /path/to/file.txt  # 输出 file.txt
dirname /path/to/file.txt   # 输出 /path/to

查看文件及内容处理命令

在Linux中,查看和处理文件内容是开发和运维的常见任务。以下是一些用于查看文件及处理内容的命令。

cattac:查看或反向显示文件内容

cat可以显示文件内容,而tac则以反向方式显示文件内容。两者是查看文件内容的基本工具。

cat file.txt     # 显示文件内容
tac file.txt     # 反向显示文件内容

moreless:分页查看文件内容

moreless用于逐页查看文件内容,less提供了更灵活的浏览功能,如上下翻页、搜索等。

more file.txt     # 一页一页显示文件
less file.txt     # 更灵活的文件浏览方式

headtail:查看文件头部或尾部

headtail分别用于查看文件的前几行和后几行。tail -f常用于实时监控日志文件。

head -n 5 file.txt     # 查看文件前5行
tail -n 5 file.txt      # 查看文件后5行
tail -f file.txt        # 实时监控日志文件

cutsplitpaste:文本处理工具

cut用于按指定分隔符切割文件内容,split用于按指定大小或行数分割文件,paste用于将文件合并为列。

cut -d',' -f1 file.txt  # 按逗号分隔,显示第一列
split file.txt -l 10     # 按10行分割文件
paste file1.txt file2.txt  # 将两个文件合并为列

sortuniq:排序与去重

sort用于对文本文件内容进行排序,uniq用于去除重复行。两者常用于数据处理和日志分析。

sort file.txt      # 排序文件内容
uniq file.txt      # 去除重复行

wc:统计文件行数、单词数和字节数

wc是一个非常实用的命令,用于统计文件的行数、单词数和字节数,是开发和运维中常用的分析工具。

wc -l file.txt     # 统计行数
wc -w file.txt     # 统计单词数
wc -c file.txt     # 统计字节数

iconvdos2unix:文件编码转换

iconv用于将文件从一种编码转换为另一种编码,dos2unix则专门用于将Windows格式文件转换为Unix格式。

iconv -f ISO-8859-1 -t UTF-8 file.txt  # 转换文件编码
dos2unix file.txt                        # 转换Windows格式为Unix格式

diffvimdiff:比较文件内容

diff用于比较两个文件之间的差异,vimdiff则提供了一个可视化方式来比较文件内容,适用于代码审查和文件修复。

diff file1.txt file2.txt  # 比较两个文件的差异
vimdiff file1.txt file2.txt  # 可视化比较两个文件

revgrep/egreptr:文本处理与搜索

rev用于将文件内容反向显示,grepegrep用于文本搜索,tr用于字符转换或删除。

rev file.txt    # 反向显示文件内容
grep "pattern" file.txt  # 搜索文件中包含指定模式的行
tr 'a-z' 'A-Z' file.txt  # 将文件内容转换为大写

网络操作命令

网络是现代系统运行的基础,掌握网络操作命令对于系统管理和开发任务至关重要。

pingtraceroutenslookup

ping用于测试主机间的网络连通性,traceroute用于追踪数据包的路径,nslookup用于查询DNS信息。

ping example.com   # 测试网络连通性
traceroute example.com  # 显示数据包路径
nslookup example.com    # 查询域名解析信息

sshscptelnet

ssh用于安全远程登录,scp用于安全复制文件,telnet用于不安全的远程连接。

ssh user@example.com       # 远程登录
scp file.txt user@example.com:/path/to/dest  # 安全复制文件
telnet example.com 22       # 远程连接(不安全)

wget:从网络下载文件

wget是一个功能强大的网络下载工具,可以递归下载网页内容,适用于自动化部署和数据采集。

wget http://example.com/file.txt  # 下载文件
wget -r http://example.com/      # 递归下载整个网站

nmap:网络扫描工具

nmap是一个功能丰富的网络扫描和安全分析工具,用于探测网络中的主机和服务。

nmap 192.168.1.0/24  # 扫描本地网络中的主机
nmap -sV example.com  # 探测目标主机的开放端口和服务版本

netstatss:网络状态监控

netstat用于显示网络连接、路由表和接口信息,而ss是其更快、更高效的替代工具。

netstat -tuln  # 显示所有监听的TCP和UDP端口
ss -tuln       # 更快速的网络状态查看方式

ifconfigifupifdown

ifconfig用于查看和设置网络接口配置,ifupifdown用于启动和关闭网卡。

ifconfig eth0      # 查看eth0网卡配置
ifup eth0          # 启动eth0网卡
ifdown eth0        # 关闭eth0网卡

route:网络路由管理

route命令用于查看和设置Linux系统的路由表,是网络配置的重要工具。

route -n  # 显示路由表
route add -host 192.168.1.100 dev eth0  # 添加路由规则

系统管理与性能监视命令

Linux系统管理离不开对系统状态和性能的监控,以下是一些常用系统管理与性能监视命令。

unamehostname

uname用于显示系统信息,而hostname用于查看或设置系统主机名。

uname -a  # 显示完整的系统信息
hostname  # 查看当前主机名

uptimedmesg

uptime用于显示系统运行时间和负载情况,dmesg用于查看系统日志和启动信息。

uptime  # 显示系统运行时间和负载
dmesg  # 查看内核日志和系统启动信息

dfdu

df用于查看磁盘空间使用情况,du用于查看目录或文件占用的磁盘空间。

df -h  # 查看磁盘空间(以人类可读格式)
du -sh /path/to/dir  # 查看目录大小

topfree

top用于实时监控系统资源使用情况,free用于查看内存使用情况。

top  # 实时监控进程和系统资源
free -h  # 查看内存使用情况

vmstatiostat

vmstat用于查看虚拟内存和系统状态信息,iostat用于监控磁盘I/O和CPU使用率。

vmstat 1  # 每秒刷新一次系统状态
iostat -x 1  # 查看磁盘I/O和CPU使用情况

sar:系统活动报告

sarSystem Activity Reporter,可以记录和分析系统的性能数据,包括CPU、内存、磁盘和网络使用情况。

sar -u 1  # 查看CPU使用情况
sar -r 1  # 查看内存使用情况

straceltrace:进程追踪工具

strace用于追踪进程调用系统调用的情况,ltrace用于追踪库函数调用。

strace -f ./my_program  # 跟踪进程的系统调用
ltrace ./my_program      # 跟踪进程的库函数调用

ipcsipcrm:进程间通信管理

ipcs用于显示进程间通信设施的状态,ipcrm用于删除这些设施。

ipcs -m  # 显示共享内存信息
ipcrm -m  # 删除共享内存

用户管理命令

Linux系统是多用户多任务系统,用户管理是系统安全和权限控制的基础。以下是一些用户管理命令。

useraddusermoduserdel

useradd用于创建新用户,usermod用于修改用户属性,userdel用于删除用户。

useradd newuser  # 创建新用户
usermod -aG sudo newuser  # 将用户添加到sudo组
userdel newuser  # 删除用户

groupadd:创建用户组

groupadd用于创建新的用户组,是权限管理的重要工具。

groupadd developers  # 创建开发者组

passwdchage:密码管理

passwd用于更改用户密码,chage用于管理密码的有效期。

passwd newuser  # 更改用户密码
chage -M 90 newuser  # 设置密码有效期为90天

idsuvisudo:用户身份与权限管理

id用于显示用户ID和所属群组,su用于切换用户身份,visudo用于编辑/etc/sudoers文件。

id user  # 显示用户信息
su - user  # 切换用户身份
visudo  # 编辑sudo权限文件

sudo:权限提升

sudo允许普通用户以管理员身份执行命令,避免直接使用root账户。

sudo apt update  # 以管理员权限执行命令

系统权限及授权命令

Linux系统中权限管理至关重要,以下是一些用于权限控制的命令。

chmodchown:文件权限控制

chmod用于修改文件或目录的权限,chown用于修改文件或目录的拥有者。

chmod 755 file.txt  # 修改文件权限
chown user:group file.txt  # 修改文件拥有者和群组

chgrp:修改群组

chgrp用于修改文件或目录所属的群组,常用于权限集中管理。

chgrp developers file.txt  # 将文件所属群组设为developers

umask:设置默认权限

umask用于设置文件和目录的默认权限掩码,避免权限配置错误。

umask 022  # 设置默认权限掩码为022

系统关机与重启命令

Linux系统提供了多种方式来进行关机、重启和查看系统信息。

shutdownhaltpowerofflogout

shutdown用于安全关机,halt用于停止系统,poweroff用于关闭系统并切断电源,logoutexit用于退出当前会话。

shutdown -h now  # 立即关机
halt            # 停止系统
poweroff        # 关闭系统并切断电源
logout           # 退出当前会话
exit             # 退出当前会话

进程管理相关命令

Linux中的进程管理是系统资源调度和性能优化的核心。以下是一些常用进程管理命令。

bgfgjobs

bg用于将进程放入后台运行,fg用于将后台进程调至前台运行,jobs用于查看后台运行的进程列表。

bg %1  # 将进程1放入后台运行
fg %1  # 将进程1调至前台
jobs   # 查看后台运行的进程

killkillallpkill

kill用于终止指定进程,killall用于终止所有同名进程,pkill则通过进程名终止进程。

kill 1234  # 终止进程ID为1234的进程
killall my_program  # 终止所有名为my_program的进程
pkill my_program     # 通过进程名终止进程

运维工具与系统优化

Linux运维中常用的工具包括Docker监控工具,它们在系统部署和性能优化中发挥着重要作用。

Docker:容器化开发与部署

Docker是一个容器化平台,可以快速部署、测试和管理应用程序。通过Docker,开发者可以实现环境隔离快速部署

docker run hello-world  # 运行一个Docker容器
docker ps               # 查看运行中的容器
docker logs container_id  # 查看容器日志

监控工具:tophtopiotopnmon

top是一个基础的性能监控工具,htopiotop提供了更友好的界面和更详细的资源监控功能,nmon则是用于实时系统性能监控的工具。

top  # 查看实时进程和资源使用情况
htop  # 可视化性能监控工具
iotop  # 监控磁盘I/O
nmon  # 实时系统性能监控工具

日志分析工具:journalctllogrotategrep

journalctl用于查看系统日志,logrotate用于自动轮转日志文件,grep可以用于筛选日志中的关键信息。

journalctl -u sshd  # 查看sshd服务的日志
logrotate /etc/logrotate.conf  # 执行日志轮转配置
grep "error" /var/log/syslog  # 筛选日志中的错误信息

Shell脚本与自动化

Shell脚本是Linux系统中实现自动化运维和提高效率的重要工具。掌握基本的脚本编写技巧,可以显著提升工作效率。

基础Shell脚本语法

Shell脚本通常以.sh为扩展名,使用#!/bin/bash指定解释器。脚本中可以使用变量、条件判断和循环等控制结构。

#!/bin/bash
echo "Hello, World!"

echoprintfhistory

echo用于输出文本,printf用于格式化输出,history用于查看历史命令。

echo "This is a message"  # 输出消息
printf "Formatted: %s\n" "Hello"  # 格式化输出
history  # 查看历史命令

aliasunalias:命令别名

alias用于设置命令别名,unalias用于删除别名。别名可以帮助简化复杂命令,提高操作效率。

alias ll='ls -l'  # 设置别名ll为ls -l
unalias ll        # 删除别名

watch:周期性执行命令

watch命令用于周期性地执行指定命令,并将输出以全屏方式显示,常用于监控系统状态。

watch -n 1 free  # 每秒查看内存使用情况

Linux编程与系统调用

Linux系统编程涉及进程、线程、信号、IO模型等多个核心概念,掌握这些技术是开发高性能系统的关键。

进程与线程管理

在Linux系统编程中,进程和线程是基本的执行单元。使用fork()exec()可以创建和执行新进程,pthread用于创建线程。

#include <unistd.h>
#include <stdio.h>

int main() {
    pid_t pid = fork();
    if (pid == 0) {
        printf("Child process\n");
    } else {
        printf("Parent process\n");
    }
    return 0;
}

信号处理

Linux中的信号是进程间通信的一种方式,常用的信号包括SIGINT(Ctrl+C)、SIGKILL(强制终止进程)等。使用signal()函数处理信号。

#include <signal.h>
#include <stdio.h>

void handle_sigint(int sig) {
    printf("Received SIGINT\n");
}

int main() {
    signal(SIGINT, handle_sigint);
    while (1) {
        sleep(1);
    }
    return 0;
}

IO模型与文件操作

Linux中的IO模型包括阻塞IO非阻塞IO多路复用IO异步IOread()write()函数用于文件读写,open()close()用于文件操作。

#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>

int main() {
    int fd = open("file.txt", O_WRONLY);
    if (fd == -1) {
        perror("open");
        return 1;
    }
    write(fd, "Hello, World!", 13);
    close(fd);
    return 0;
}

系统调用与资源管理

Linux提供了丰富的系统调用接口,用于操作文件、进程、内存等系统资源。掌握这些调用对系统性能优化至关重要。

#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int main() {
    int fd = open("file.txt", O_CREAT | O_WRONLY, 0644);
    if (fd == -1) {
        perror("open");
        return 1;
    }
    write(fd, "Hello, World!", 13);
    close(fd);
    return 0;
}

最佳实践与建议

为了提高Linux系统的稳定性和安全性,开发者和运维人员应遵循以下最佳实践:

  1. 权限最小化:避免将普通用户权限提升至root,使用sudo进行权限管理。
  2. 日志轮转:使用logrotate进行日志管理,避免日志过大影响系统性能。
  3. 命令别名:使用alias来简化常用命令,防止误操作。
  4. 自动化脚本:编写自动化脚本以提高运维效率,减少重复操作。
  5. 监控与调优:使用topfreeiostat等工具监控系统性能,优化资源使用。
  6. 容器化部署:使用Docker进行应用部署,实现快速、可移植的开发环境。

关键字列表

Linux, 命令, 文件管理, 进程管理, 系统监控, Shell脚本, Docker, 网络工具, 权限控制, 信号处理