Operations 33 min read

Master Linux System Commands: Quick Guide to System Info & File Management

This comprehensive cheat‑sheet covers essential Linux commands for viewing system information, managing files and directories, handling users and groups, controlling permissions, mounting filesystems, performing backups, and using package managers like RPM, YUM, DEB and APT, plus networking and CD/DVD utilities.

Java Interview Crash Guide
Java Interview Crash Guide
Java Interview Crash Guide
Master Linux System Commands: Quick Guide to System Info & File Management

View Linux System Information

arch                #显示机器的处理器架构(1)
uname -m            #显示机器的处理器架构(2)
uname -r            #显示正在使用的内核版本
 dmidecode -q        #显示硬件系统部件 (SMBIOS / DMI)
hdparm -i /dev/hda  #罗列一个磁盘的架构特性
hdparm -tT /dev/sda #在磁盘上执行测试性读取操作
cat /proc/cpuinfo   #显示 CPU info 的信息
cat /proc/interrupts#显示中断
cat /proc/meminfo   #校验内存使用
cat /proc/swaps     #显示哪些 swap 被使用
cat /proc/version   #显示内核的版本
cat /proc/net/dev   #显示网络适配器及统计
cat /proc/mounts    #显示已加载的文件系统
lspci -tv          #罗列 PCI 设备
lsusb -tv          #显示 USB 设备

date: Show System Date

cal 2007                #显示 2007 年的日历表
date 041217002007.00   #设置日期和时间 - 月日时分年.秒
clock -w                #将时间修改保存到 BIOS

Shutdown, Reboot, Logout

shutdown -h now        #关闭系统 (1)
init 0                #关闭系统 (2)
telinit 0             #关闭系统 (3)
shutdown -h hours:minutes &   #按预定时间关闭系统
shutdown -c           #取消按预定时间关闭系统
shutdown -r now       #重启 (1)
reboot                #重启 (2)
logout                #注销

Files and Directories

cd /home               #进入 '/home' 目录
cd ..                  #返回上一级目录
cd ../..               #返回上两级目录
cd                     #进入个人的主目录
cd ~user1              #进入个人的主目录
cd -                   #返回上次所在的目录
pwd                    #显示工作路径

ls                     #查看目录中的文件
ls -F                  #查看目录中的文件(带类型标记)
ls -l                  #显示文件和目录的详细资料
ls -a                  #显示隐藏文件
ls *[0-9]*             #显示包含数字的文件名和目录名
tree                   #显示文件和目录的树形结构 (1)
ls -R                  #显示文件和目录的树形结构 (2)

mkdir dir1             #创建目录 dir1
mkdir dir1 dir2        #一次创建两个目录
mkdir -p /tmp/dir1/dir2#创建目录树
rm -f file1            #删除文件 file1
rmdir dir1             #删除目录 dir1
rm -rf dir1            #删除目录及其内容
rm -rf dir1 dir2        #同时删除两个目录及其内容
mv dir1 new_dir        #重命名/移动目录

cp file1 file2          #复制文件
cp dir/* .             #复制目录下所有文件到当前目录
cp -a /tmp/dir1 .      #复制目录到当前工作目录
cp -a dir1 dir2        #复制目录

ln -s file1 lnk1       #创建软链接
ln file1 lnk1          #创建硬链接

touch -t 0712250000 file1 #修改文件时间戳 (YYMMDDhhmm)
file file1 outputs the mime type of the file as text
iconv -l               #列出已知的编码
iconv -f fromEncoding -t toEncoding inputFile > outputFile #转换文件编码

find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" \; #批量生成缩略图(需 ImageMagick)

File Search

find / -name file1                #从根文件系统搜索文件和目录
find / -user user1               #搜索属于用户 user1 的文件和目录
find /home/user1 -name *.bin     #在 /home/user1 中搜索 .bin 结尾的文件
find /usr/bin -type f -atime +100#搜索过去 100 天未使用的执行文件
find /usr/bin -type f -mtime -10 #搜索最近 10 天创建或修改的文件
find / -name *.rpm -exec chmod 755 '{}' \; #搜索 .rpm 文件并设置权限
find / -xdev -name *.rpm          #搜索 .rpm 文件,忽略可移动设备
locate *.ps                      #寻找 .ps 文件(需先 updatedb)
whereis halt                     #显示二进制文件、源码或 man 的位置
which halt                       #显示二进制文件的完整路径

Mount Filesystems

mount /dev/hda2 /mnt/hda2          #挂载分区 hda2(确保挂载点已存在)
umount /dev/fd0 /mnt/floppy      #挂载软盘
mount /dev/cdrom /mnt/cdrom        #挂载 CDROM 或 DVDROM
mount /dev/hdc /mnt/cdrecorder     #挂载 CDRW 或 DVDROM
mount /dev/hdb /mnt/cdrecorder     #挂载 CDRW 或 DVDROM
mount -o loop file.iso /mnt/cdrom  #挂载 ISO 镜像文件
mount -t vfat /dev/hda5 /mnt/hda5   #挂载 Windows FAT32 文件系统
mount /dev/sda1 /mnt/usbdisk       #挂载 USB 设备
mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share #挂载 Windows 网络共享
umount /dev/hda2                  #卸载分区 hda2
fuser -km /mnt/hda2               #当设备繁忙时强制卸载
umount -n /mnt/hda2                #不写入 /etc/mtab(只读或磁盘写满时有用)

Disk Space Related

df -h                     #显示已挂载的分区列表
ls -lSr | more            #按尺寸大小排列文件和目录
du -sh dir1               #估算目录 dir1 已使用的磁盘空间
du -sk * | sort -rn       #按容量大小显示文件和目录的大小
rpm -qa --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n #按大小显示已安装的 rpm 包占用空间(Fedora/RedHat)
dpkg-query -W -f '${Installed-Size;10}t${Package}n' | sort -k1,1n #按大小显示已安装的 deb 包占用空间(Ubuntu/Debian)

Users and Groups

groupadd group_name          #创建新用户组
groupdel group_name          #删除用户组
groupmod -n new_group_name old_group_name #重命名用户组
useradd -c "Name Surname" -g admin -d /home/user1 -s /bin/bash user1 #创建属于 admin 组的用户
useradd user1                #创建新用户
userdel -r user1             #删除用户(-r 删除主目录)
usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 #修改用户属性
passwd                       #修改口令
passwd user1                 #为指定用户修改口令(仅 root 可执行)
chage -E 2005-12-31 user1    #设置用户口令失效期限
pwck                         #检查 /etc/passwd 文件格式和语法
grpck                        #检查 /etc/group 文件格式和语法
newgrp group_name            #切换到新群组,以改变新创建文件的默认群组

File Permissions

ls -lh                     #显示权限(人性化大小)
chmod ugo+rwx directory1    #为所有者、群组、其他人添加读、写、执行权限
chmod go-rwx directory1     #删除群组和其他人的所有权限
chown user1 file1           #改变文件所有者
chown -R user1 directory1   #递归改变目录及其内容的所有者
chgrp group1 file1          #改变文件的群组
chown user1:group1 file1    #同时改变所有者和群组
find / -perm -u+s          #列出系统中所有使用了 SUID 位的文件
chmod u+s /bin/file1       #设置 SUID 位
chmod u-s /bin/file1       #禁用 SUID 位
chmod g+s /home/public      #设置目录的 SGID 位
chmod g-s /home/public      #禁用 SGID 位
chmod o+t /home/public      #设置 Sticky 位(仅所有者可删除文件)
chmod o-t /home/public      #禁用 Sticky 位

Special File Attributes

chattr +a file1   #只允许以追加方式读写文件
chattr +c file1   #允许内核自动压缩/解压文件
chattr +d file1   #dump 备份时忽略此文件
chattr +i file1   #设为不可变,不能删除、修改、重命名或链接
chattr +s file1   #安全删除文件
chattr +S file1   #写操作后立即将修改写入磁盘
chattr +u file1   #删除后可恢复文件
lsattr            #显示特殊属性

Packaging and Compression

bunzip2 file1.bz2   #解压 .bz2 文件
bzip2 file1         #压缩文件为 .bz2
gunzip file1.gz     #解压 .gz 文件
gzip file1          #压缩文件为 .gz
gzip -9 file1       #最大压缩率
rar a file1.rar test_file   #创建 .rar 包
rar a file1.rar file1 file2 dir1 #压缩多个文件/目录
rar x file1.rar    #解压 .rar 包
unrar x file1.rar   #解压 .rar 包

tar -cvf archive.tar file1               #创建非压缩 tar 包
tar -cvf archive.tar file1 file2 dir1   #创建包含多个文件/目录的 tar 包
tar -tf archive.tar                      #列出 tar 包内容
tar -xvf archive.tar                     #解压 tar 包
tar -xvf archive.tar -C /tmp              #解压到指定目录
tar -cvfj archive.tar.bz2 dir1            #创建 bzip2 压缩 tar 包
tar -jxvf archive.tar.bz2                #解压 bzip2 tar 包
tar -cvfz archive.tar.gz dir1            #创建 gzip 压缩 tar 包
tar -zxvf archive.tar.gz                 #解压 gzip tar 包

zip file1.zip file1                       #创建 zip 包
zip -r file1.zip file1 file2 dir1         #递归压缩文件和目录
unzip file1.zip                           #解压 zip 包

RPM Packages (Fedora, RedHat, etc.)

rpm -ivh package.rpm                     #安装 rpm 包
rpm -ivh --nodeps package.rpm            #忽略依赖关系安装 rpm 包
rpm -U package.rpm                       #更新 rpm 包(不改配置文件)
rpm -F package.rpm                       #更新已安装的 rpm 包
rpm -e package_name.rpm                 #删除 rpm 包
rpm -qa                                 #列出所有已安装的 rpm 包
rpm -qa | grep httpd                    #搜索名称包含 "httpd" 的 rpm 包
rpm -qi package_name                    #获取已安装包的详细信息
rpm -qg "System Environment/Daemons"    #显示一个组件的 rpm 包
rpm -ql package_name                     #列出已安装 rpm 包提供的文件列表
rpm -qc package_name                     #列出已安装 rpm 包的配置文件列表
rpm -q package_name --whatrequires       #显示依赖此包的其他包
rpm -q package_name --whatprovides       #显示此包提供的功能(占用空间)
rpm -q package_name --scripts            #显示安装/删除期间执行的脚本
rpm -q package_name --changelog          #显示包的修改历史
rpm -qf /etc/httpd/conf/httpd.conf      #确认文件由哪个 rpm 包提供
rpm -qp package.rpm -l                   #显示未安装 rpm 包提供的文件列表
rpm --import /media/cdrom/RPM-GPG-KEY  #导入公钥证书
rpm --checksig package.rpm               #检查 rpm 包完整性
rpm -qa gpg-pubkey                      #列出已安装的所有 rpm 公钥
rpm -V package_name                     #校验文件尺寸、许可、类型、所有者、群组、MD5、时间等
rpm -Va                                 #检查系统中所有已安装的 rpm 包(慎用)
rpm -Vp package.rpm                      #确认未安装的 rpm 包
rpm2cpio package.rpm | cpio --extract --make-directories *bin* #从 rpm 包运行可执行文件
rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm #从源码安装已构建的 rpm 包
rpmbuild --rebuild package_name.src.rpm   #从源码构建 rpm 包

YUM (Fedora, RedHat, etc.)

yum install package_name                 #下载并安装 rpm 包
yum localinstall package_name.rpm        #使用本地仓库解决依赖并安装 rpm 包
yum update package_name.rpm              #更新系统中所有已安装的 rpm 包
yum update package_name                  #更新指定 rpm 包
yum remove package_name                  #删除 rpm 包
yum list                                 #列出系统中已安装的所有包
yum search package_name                  #在仓库中搜索软件包
yum clean packages                       #清理 rpm 缓存,删除已下载的包
yum clean headers                        #删除所有头文件
yum clean all                            #删除所有缓存的包和头文件

DEB Packages (Debian, Ubuntu, etc.)

dpkg -i package.deb                     #安装/更新 deb 包
dpkg -r package_name                    #删除 deb 包
dpkg -l                                 #列出系统中已安装的 deb 包
dpkg -l | grep httpd                    #搜索名称包含 "httpd" 的 deb 包
dpkg -s package_name                    #获取已安装包的详细信息
dpkg -L package_name                    #列出已安装 deb 包提供的文件列表
dpkg --contents package.deb              #显示未安装 deb 包提供的文件列表
dpkg -S /bin/ping                       #确认文件由哪个 deb 包提供

APT Tools (Debian, Ubuntu, etc.)

apt-get install package_name            #安装/更新 deb 包
apt-cdrom install package_name         #从光盘安装/更新 deb 包
apt-get update                         #更新软件包列表
apt-get upgrade                        #升级所有已安装的软件
apt-get remove package_name            #删除 deb 包
apt-get check                          #检查依赖关系是否正确
apt-get clean                          #清理下载的软件包缓存
apt-cache search searched-package      #搜索包含关键字的包名

Viewing File Content

cat file1                               #正向查看文件内容
tac file1                               #反向查看文件内容
more file1                              #分页查看长文件
less file1                              #分页查看并支持向前翻页
head -2 file1                           #查看前两行
tail -2 file1                           #查看后两行
tail -f /var/log/messages               #实时查看文件追加内容

Text Processing

cat file1 file2 ... | command <> file1_in.txt_or_file1_out.txt   #使用 PIPE、STDIN、STDOUT 进行文本处理
cat file1 | command (sed|grep|awk|…) > result.txt          #将处理结果写入新文件
cat file1 | command (sed|grep|awk|…) >> result.txt         #将处理结果追加到已有文件

grep Aug /var/log/messages               #在文件中查找关键字 "Aug"
grep ^Aug /var/log/messages            #查找以 "Aug" 开头的行
grep [0-9] /var/log/messages            #查找包含数字的行
grep Aug -R /var/log/*                  #递归搜索目录中的关键字

sed 's/stringa1/stringa2/g' example.txt   #替换字符串
sed '/^$/d' example.txt                    #删除空白行
sed '/ *#/d; /^$/d' example.txt            #删除注释和空白行
tr '[:lower:]' '[:upper:]' <<< 'esempio'   #大小写转换
sed -e '1d' result.txt                    #删除第一行
sed -n '/stringa1/p' example.txt           #仅显示包含 "stringa1" 的行
sed -e 's/ *$//' example.txt               #删除行尾空白字符
sed -e 's/stringa1//g' example.txt        #删除所有 "stringa1"
sed -n '1,5p;5q' example.txt              #显示第 1-5 行
sed -n '5p;5q' example.txt                #显示第 5 行
sed -e 's/00*/0/g' example.txt            #将多个零替换为单个零

cat -n file1                              #为每行添加行号
awk 'NR%2==1' example.txt                 #删除偶数行
awk '{print $1}' <<< 'a b c'               #显示第一列
awk '{print $1,$3}' <<< 'a b c'            #显示第一和第三列
paste file1 file2                         #合并两列内容
paste -d '+' file1 file2                  #合并并用 "+" 分隔

sort file1 file2 | uniq                   #取并集(去重)
sort file1 file2 | uniq -u              #删除交集,保留其余行
sort file1 file2 | uniq -d               #取交集(仅出现于两文件的行)

comm -1 file1 file2                       #只保留 file2 中独有的行
comm -2 file1 file2                       #只保留 file1 中独有的行
comm -3 file1 file2                       #只保留两文件的公共部分

Character Set and File Format Conversion

dos2unix filedos.txt fileunix.txt   #将文件从 DOS 格式转换为 UNIX
unix2dos fileunix.txt filedos.txt   #将文件从 UNIX 格式转换为 DOS
recode ..HTML < page.txt > page.html #将文本转换为 HTML
recode -l | more                    #显示所有支持的转换格式

Filesystem Analysis

badblocks -v /dev/hda1            #检查磁盘坏块
fsck /dev/hda1                    #检查/修复 Linux 文件系统完整性
fsck.ext2 /dev/hda1               #检查/修复 ext2 文件系统
e2fsck /dev/hda1                  #检查/修复 ext2 文件系统
e2fsck -j /dev/hda1               #检查/修复 ext3 文件系统(带日志)
fsck.ext3 /dev/hda1               #检查/修复 ext3 文件系统
fsck.vfat /dev/hda1               #检查/修复 FAT 文件系统
fsck.msdos /dev/hda1              #检查/修复 DOS 文件系统
dosfsck /dev/hda1                 #检查/修复 DOS 文件系统

Initialize a Filesystem

mkfs /dev/hda1                     #在分区创建文件系统
mke2fs /dev/hda1                  #创建 ext2 文件系统
mke2fs -j /dev/hda1               #创建 ext3(带日志)文件系统
mkfs -t vfat 32 -F /dev/hda1       #创建 FAT32 文件系统
fdformat -n /dev/fd0               #格式化软盘
mkswap /dev/hda3                  #创建 swap 文件系统

SWAP Filesystem

mkswap /dev/hda3                  #创建 swap 文件系统
swapon /dev/hda3                  #启用 swap 文件系统
swapon /dev/hda2 /dev/hdb3        #同时启用两个 swap 分区

Backup

dump -0aj -f /tmp/home0.bak /home   #完整备份 /home 目录
dump -1aj -f /tmp/home0.bak /home   #交互式备份 /home 目录
restore -if /tmp/home0.bak          #还原交互式备份

rsync -rogpav --delete /home /tmp   #同步两个目录
rsync -rogpav -e ssh --delete /home ip_address:/tmp   #通过 SSH 同步
rsync -az -e ssh --delete ip_addr:/home/public /home/local   #压缩并通过 SSH 同步远程到本地
rsync -az -e ssh --delete /home/local ip_addr:/home/public   #压缩并通过 SSH 同步本地到远程

dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz'   #通过 SSH 备份本地磁盘
dd if=/dev/sda of=/tmp/file1        #备份磁盘内容到文件
tar -Puf backup.tar /home/user    #交互式追加备份目录
(cd /tmp/local && tar c .) | ssh -C user@ip_addr 'cd /home/share && tar x -p'   #通过 SSH 复制目录到远程
(tar c /home) | ssh -C user@ip_addr 'cd /home/backup && tar x -p'   #通过 SSH 复制本地目录到远程
tar cf - . | (cd /tmp/backup ; tar xf - )   #本地复制目录并保留权限和链接

find /home/user1 -name "*.txt" | xargs cp -av --target-directory=/home/backup/ --parents   #查找并复制所有 .txt 文件
find /var/log -name "*.log" | tar cv --files-from=- | bzip2 > log.tar.bz2   #打包并压缩所有 .log 文件

dd if=/dev/hda of=/dev/fd0 bs=512 count=1   #将 MBR 内容复制到软盘
dd if=/dev/fd0 of=/dev/hda bs=512 count=1   #从软盘恢复 MBR 内容

CD/DVD

cdrecord -v gracetime=2 dev=/dev/cdrom -eject -blank=fast -force   #清空可复写光盘内容
mkisofs /dev/cdrom > cd.iso                                 #创建光盘 ISO 镜像文件
mkisofs /dev/cdrom | gzip > cd_iso.gz                       #创建压缩的 ISO 镜像文件
mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd   #创建目录的 ISO 镜像
cdrecord -v dev=/dev/cdrom cd.iso                           #刻录 ISO 镜像
gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom -               #刻录压缩的 ISO 镜像
mount -o loop cd.iso /mnt/iso                               #挂载 ISO 镜像文件
cd-paranoia -B                                             #从 CD 转录音轨到 wav 文件
cd-paranoia -- "-3"                                        #使用参数 -3 转录音轨
cdrecord --scanbus                                         #扫描 SCSI 总线
dd if=/dev/hdc | md5sum                                   #校验设备的 MD5 校验码

Network (Ethernet and WiFi)

ifconfig eth0                     #显示以太网卡配置
ifup eth0                        #启用 eth0 网络设备
ifdown eth0                      #禁用 eth0 网络设备
ifconfig eth0 192.168.1.1 netmask 255.255.255.0   #设置 IP 地址
ifconfig eth0 promisc            #设置混杂模式(嗅探)
dhclient eth0                    #使用 DHCP 启用 eth0

route -n                         #查看路由表
route add -net 0/0 gw IP_Gateway #配置默认网关
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 #配置静态路由
route del 0/0 gw IP_gateway      #删除默认路由

hostname                         #查看机器名
host www.example.com              #解析主机名或 IP
nslookup www.example.com          #查询 DNS 记录
ip link show                     #查看网卡信息
mii-tool                         #查看/管理网卡介质状态
ethtool                          #查询和设置网卡配置
netstat -tupl                    #显示 TCP/UDP 状态信息
tcpdump tcp port 80               #捕获所有 HTTP 流量
Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

linuxShellSystem Administrationfile managementsystem commands
Java Interview Crash Guide
Written by

Java Interview Crash Guide

Dedicated to sharing Java interview Q&A; follow and reply "java" to receive a free premium Java interview guide.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.