说明
本文罗列了一些常用的Linux命令,适用于稍微有一点Linux基础的开发者使用,作为手册查询或者复习。
文件管理
目录相关
pwd # 显示用户当前所处的目录
ls # 列出当前目录文件(不包括隐含文件)
ls -a # 列出当前目录文件(包括隐含文件)
ls -l # 列出当前目录下文件的详细信息
ls -lS # 按大小降序排列
ls -l | sort -n -k5 # 按大小升序
ls -lrt # 按时间升序
ls -lnt # 按时间降序
ls -l | sort -k9 # 按文件名升序(这是ls的默认输出方式)
ls -l | sort -rk9 # 按文件名降序
ls -lr # 按文件名降序
cd 目录 # 进入目录
cd .. # 回当前目录的上一级目录
cd - # 回上一次所在的目录
cd ~ 或 cd # 回当前用户的宿主目录
mkdir 目录名 # 创建一个目录
mkdir -p 目录名 # 递归创建一个目录
rmdir 空目录名 # 删除一个空目录
rm 文件名 文件名 # 删除一个文件或多个文件
rm -rf 非空目录名 # 删除一个非空目录下的一切
mv 路经/文件 /路经/文件 # 移动相对路经下的文件到绝对路经下
mv 文件名 新名称 # 重命名
mv -f 文件名 新名称 # 强制移动并覆盖
find 路经 -name 字符串 # 查找路经所在范围内满足字符串匹配的文件和目录
空间相关
du -sh /var # 查看/var使用的总空间大小
du -sh /var/* # 查看/var下子文件夹和文件分别使用的空间大小
du -h --max-depth=0 # 查看当前路径使用的总空间大小
du -h --max-depth=1 # 查看当前路径子文件夹使用的空间大小
du -s * | sort -nr | head # 选出前十名
du -s * | sort -nr | tail # 选出后十名
du -sh # 查看当前目录总共占的容量,简单查看:ls -lh
du -sh dir1 # 估算目录 'dir1' 已经使用的磁盘空间'
du -sk * | sort -rn # 以容量大小为依据依次显示文件和目录的大小
df -Th # 查询磁盘占用情况
du -lh --max-depth=1 # 查看当前目录下一级子文件和子目录占用的磁盘容量
find . -type f -size +100M # 查找当前文件夹下大于100M的文件
mount /dev/hda2 /mnt/hda2 # 挂载一个叫做hda2的盘 (注:确定目录 '/ mnt/hda2' 已经存在)
umount /dev/hda2 # 卸载一个叫做hda2的盘 (先从挂载点 '/ mnt/hda2' 退出)
df -h # 显示已经挂载的分区列表
远程传输
scp -r datasets root@192.168.1.10:/data/ # 将datasets文件夹发送到192.168.1.10的/data目录下
wget 路径 # 从网络上下载文件
权限相关
chmod 777 file # 使file文件拥有所有权限
r=4,w=2,x=1
若要rwx属性则4+2+1=7
若要rw-属性则4+2=6
若要r-x属性则4+1=7
-rw------- (600) -- 只有属主有读写权限
-rw-r--r-- (644) -- 只有属主有读写权限;而属组用户和其他用户只有读权限
-rwx------ (700) -- 只有属主有读、写、执行权限
-rwxr-xr-x (755) -- 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限
-rwx--x--x (711) -- 属主有读、写、执行权限;而属组用户和其他用户只有执行权限
-rw-rw-rw- (666) -- 所有用户都有文件读、写权限。这种做法不可取
-rwxrwxrwx (777) -- 所有用户都有读、写、执行权限。更不可取的做法。
chown jessie:users file1.txt # 将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie
chmod -R lamport:users * # 将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport
chown root /home # 把/home的属主改成root用户
chgrp root /home # 把/home的属组改成root组
文件相关
touch file1 # 创建一个文件
head -n num 文件名 # 显示文件的前num行(缺省时,显示文件的前10行)
tail -n num 文件名 # 显示文件的末尾num行(缺省时,显示文件的末尾10行)
grep -2 int test.c # 在文件test.c中查找所有含字符串“int”的行,若找到显示该行及该行前后各2行的内容
cat file1 # 从第一个字节开始正向查看文件的内容
tac file1 # 从最后一行开始反向查看一个文件的内容
more file1 # 查看一个长文件的内容
less file1 # 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作
链接相关
ls -al 或 ls -li # 查看软连接列表
ln -s 文件名 目标地址 # 创建软链接
ln file1 lnk1 # 创建物理链接
rm -rf 目的地址 # 删除软链接
打包/解压
tar –xvf FileName.tar # 解包FileName.tar
tar –cvf FileName.tar /home # 把/home目录打包
tar –zcvf FileName.tar.gz /mnt # gz压缩
tar –zxvf FileName.tar.gz # gz解压缩
tar -zxvf beFileName.tar.gz -C /home # 将FileName.tar.gz解压到/home目录下
tar –jxvf FileName.tar.bz2 # bz2解压缩
tar zcvf FileName.tar.tgz /home # tgz压缩
tar zxvf FileName.tar.tgz # tgz解压缩
c – 创建压缩文件
x – 解压文件
v – 显示进度
f – 文件名
t – 查看压缩文件内容
j – 通过bzip2归档(文件后缀bz2)
z –通过gzip归档(文件后缀gz)
r – 在压缩文件中追加文件或目录
W – 验证压缩文件
gunzip FileName.gz # 解压1
gzip -d FileName.gz # 解压2
gzip FileName # 压缩,只能压缩文件
unzip FileName.zip # 解压
zip FileName.zip DirName # 将DirName本身压缩
zip -r FileName.zip DirName # 压缩,递归处理,将指定目录下的所有文件和子目录一并压缩
rar x FileName.rar # 解压(第三方,apt-get install rar)
rar a FileName.rar DirName # 压缩
系统管理
用户相关
sudo 命令 # 以root权限执行命令
su # 切换到root用户
su 用户名 # 切换用户
Useradd 用户名 # 创建一个新的用户
Groupadd 组名 # 创建一个新的组
Passwd 用户名 # 为用户创建密码
Passwd -d 用户名 # 删除用户密码也能登陆
Passwd -S 用户名 # 查询账号密码
Usermod -l 新用户名 老用户名 # 为用户改名
Userdel–r 用户名 # 删除用户一切
服务相关
which find # 输出find命令所处的位置
service [servicename] start/stop/restart # 系统服务控制操作
/etc/init.d/[servicename] start/stop/restart # 系统服务控制操作
systemctl start/stop/restart [servicename] # 服务控制操作
systemctl status [servicename] # 服务状态查询
systemctl enable/disable [servicename] # 服务开机自启
ps -e 或 ps -A # 查看当前有哪些进程
ps -f # 显示完整的格式化输出,包含更详细的信息。
ps -l # 以长格式显示进程信息,包括进程的状态、资源占用等信息。
ps -u # 显示指定用户的进程信息。
ps -p # 显示指定进程ID的信息。
ps aux 或 ps -ef # 显示所有进程的详细信息,包括命令行参数等。
kill 进程号(就是ps -A中的第一列的数字)或者 killall 进程名 # 杀死一个进程
kill -9 进程号 # 强制杀死一个进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head # 获取内存占用最多的10个进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head # 获取CPU占用最多的10个进程
top # 实时显示系统中各个进程的资源占用情况
系统信息
uname -a 查看内核版本
lsb_release -a 查看ubuntu版本
lsusb 查看usb设备
ethtool eth0 查看网卡状态
cat /proc/cpuinfo 查看cpu信息
lshw 查看当前硬件信息
fdisk -l 查看磁盘信息
df -h 查看硬盘剩余空间
free -m 查看当前的内存使用情况
fdisk /dev/sdb 为一块新的SCSI硬盘进行分区
lscpu CPU概要信息
arch 显示机器的处理器架构
nvidia-smi -L 查看nvidia显卡数量以及型号
lspci | grep -i nvidia 查看nvidia显卡数量以及型号
cat /proc/driver/nvidia/version 查看NVIDIA驱动本
lspci -tv 罗列 PCI 设备
lsusb -tv 显示 USB 设备
date 显示系统日期
cal 2007 显示2007年的日历表
date 041217002007.00 设置日期和时间 - 月日时分年.秒
clock -w 将时间修改保存到 BIOS
系统
reboot 重启LINUX系统
reboot now 重启
shutdown –h now 关闭LINUX系统
shutdown –r now 重启LINUX系统
init 0 关闭系统
shutdown -h hours:minutes & 按预定时间关闭系统
shutdown -c 取消按预定时间关闭系统
logout 注销
uname -a 查看正在使用的内核版本
sudo dpkg --get-selections |grep linux-image 查看已经安装的所有内核版本
sudo apt-get remove linux-image-5.15.0-52-generic 移除内核
grep menuentry /boot/grub/grub.cfg 查看内核的启动顺序
网络
ip addr 查看本机ip
curl cip.cc 查看公网ip
ufw status 查看防火墙状态
ufw disable 关闭防火墙
ufw allow 80/tcp 开放TCP 80端口
ufw deny 113 拒绝UDP 113端口
ufw delete allow 53/tcp 删除TCP 53端口
lsof -i :80 查看当前监听80端口的程序
netstat -tulnp | grep 8000 查看端口占用
ss -anlt 查看端口占用
软件包管理
apt
apt search package 搜索包
apt show package 获取包的相关信息,如说明、大小、版本等
apt depends package 了解使用依赖
apt rdepends package 查看该包被哪些包依赖
apt-cache pkgnames 执行pkgnames子命令列出当前所有可用的软件包
apt policy package 使用policy命令显示软件包的安装状态和版本信息。
apt install package 安装包
apt install package=version 安装指定版本的包
apt install package --reinstall 重新安装包
apt -f install 修复安装, "-f = --fix-missing"
apt remove package 删除包
apt purge package 删除包,包括删除配置文件等
apt autoremove 自动卸载所有未使用的软件包
apt source package 下载该包的源代码
apt update 更新apt软件源信息
apt upgrade 更新已安装的包
apt full-upgrade 在升级软件包时自动处理依赖关系
apt clean && apt autoclean 清理无用的包
apt clean 清理已下载的软件包,实际上是清楚/var/cache/apt/archives目录中的软件包
apt autoclean 删除已经卸载的软件包备份
apt-get check 检查是否有损坏的依赖
apt list 列出包含条件的包(已安装,可升级等)
apt edit-sources 编辑源列表
apt-mark hold nvidia-driver-525-server 保持包不更新
yum
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 在rpm仓库中搜寻软件包
yum clean packages 清理rpm缓存删除下载的包
yum clean headers 删除所有头文件
yum clean all 删除所有缓存的包和头文件
deb
dpkg -i package.deb 安装包
dpkg -r package 删除包
dpkg -P package 删除包(包括配置文件)
dpkg -L package 列出与该包关联的文件
dpkg -l package 显示该包的版本
dpkg --unpack package.deb 解开deb包的内容
dpkg -S keyword 搜索所属的包内容
dpkg -l 列出当前已安装的包
dpkg -c package.deb 列出deb包的内容
dpkg --configure package 配置包
rpm
rpm -ivh package.rpm 安装一个rpm包
rpm -ivh --nodeeps 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 --checksig package.rpm 确认一个rpm包的完整性
rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性