Linux命令
基础认知
Linux 是一种自由和开放源码的类 UNIX 操作系统。
Linux 英文解释为 Linux is not Unix。
Linux内核最初是在 1991 由林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时创立的,主要受到 Minix 和 Unix 思想的启发。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
系统内核
uname -a
# 查看操作系统版本及处理器架构信息
# Linux centos8 4.18.0-305.17.1.el8_4.x86_64 #1 SMP Wed Sep 8 14:00:07 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
uname -r
# 查询内核版本 (主版本号.次版本号.末版本号)
# 4.18.0-305.17.1.el8_4.x86_64
uname -m
arch
# 查看处理器架构
cat /proc/version
# 查看Linux内核版本
# Linux version 4.18.0-305.17.1.el8_4.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.4.1 20200928 (Red Hat 8.4.1-1) (GCC)) #1 SMP Wed Sep 8 14:00:07 UTC 2021
系统设置、性能负载情况
hostname
# 查看计算机名
who
# 查看当前登录系统所有的用户
who am i
whoami
# 查看当前用户
date
# 查看系统时间
cal 2022
# 查看2022年日历
env
# 查看系统环境变量
lsmod
# 查看已加载的系统模块
lsusb -tv
# 查看USB设备信息
lspci -tv
# 查看PCI设备信息
cat /proc/cpuinfo
# 查看CPU设备信息
cat /proc/interrupts
# 查看中断(逻辑中断号、中断在各CPU上发生的次数,中断所属父设备名称、硬件中断号、中断触发方式(电平或边沿)、中断名称)
cat /proc/loadavg
# 查看系统平均负载
# 前三个是1、5、15分钟内的平均进程数;第四个的分子是正在运行的进程数,分母是进程总数;最后一个最近运行的进程ID号
# 0.03 0.04 0.08 1/505 185136
# 一般来说每个CPU的当前活动进程数不大于3那么系统的性能就是良好的。如果每个CPU的任务数大于5,那么就表明机器的性能有严重问题。对于上面的例子来说,假设系统有8个CPU,那么其每个CPU在1分钟内的进程数为:0.32/8=0.04。
uptime
# 查看系统运行时间、用户数、平均负载
# 11:14:41 up 1:18, 2 users, load average: 0.11, 0.16, 0.13
grep MemTotal /proc/meminfo
# 查看内存总量
# MemTotal: 7927768 kB
grep MemFree /proc/meminfo
# 查看空闲内存量
# MemFree: 6390732 kB
free -m
# 查看内存使用量和交换区使用量
vmstat 1 10
# 采集系统状态(1秒/次,共10次)
sar -u 1 10
# 查看CPU性能(1秒/次,共10次)
sar -d 1 10
# 查看磁盘性能(1秒/次,共10次)
iostat
# 查看io读写和cpu使用情况
top
# 实时查看cpu、内存、进程等情况
帮助命令
命令提示符:$ 普通用户 ;# root用户
命令和路径补全:
Tab
键
type
用于判断另外一个命令是否是内置命令(内置命令在系统启动时就调入内存,是常驻内存的,所以执行效率高。而外部命令是系统的软件功能,用户需要时才从硬盘中读入内存。)
man xxx
:获取 xxx命令 的帮助(man自身帮助,man 1 man
)
help xxx
:获取内置命令的帮助
xxx --help
:获取外部命令的帮助
info xxx
:获取更丰富的帮助信息
重启及关机
sync
# Linux sync命令用于数据同步,sync命令是在关闭Linux系统时使用的。
# Linux 系统中欲写入硬盘的资料有的时候为了效率起见,会写到 filesystem buffer 中,这个 buffer 是一块记忆体空间,如果欲写入硬盘的资料存于此 buffer 中,而系统又突然断电的话,那么资料就会流失了,sync 指令会将存于 buffer 中的资料强制写入硬盘中。
reboot
init 6
shutdown -r now
# 重启
shutdown -r 10
# 10分钟后重启
shutdown -r 00:00
# 0点重启
poweroff
halt
init 0
telinit 0
# 关机
shutdown -h 10
# 10分钟后关机
shutdown -h 00:00
# 0点关机
shutdown -c
# 取消关机
logout
# 退出shell
文件及目录
ls
# 查看当前文件目录列表
ls -lhF
# l:列表 h:增强文件大小易读性 F:增强文件和目录区分
tree
# 树形查看文件和目录
pwd
# 查看当前所在路径
cd
# 进入当前用户主目录
cd xxx
# 进入xxx目录
mkdir xxx yyy
# 创建xxx、yyy两个目录
mkdir -p zzz/xxx/yyy
# 创建目录树
touch zzz/xxx/yyy/test.txt
# 指定目录创建文件
touch zzz/xxx/test{0001..2000}.txt
# 创建2000个文件
find zzz/xxx -name test0666.txt
# 搜索文件
find zzz/xxx -name *66.txt
# 模糊搜索文件
ln -s zzz/xxx/yyy/test.txt testlink
# 创建软连接
ln zzz/xxx/yyy/test.txt testlink2
# 创建物理连接
cp zzz/xxx/yyy/test.txt zzz/xxx/yyy/text-copy.txt
# 复制文件
cp zzz/xxx/* xxx/
# 复制所有文件到指定目录
cp -r zzz/xxx/ yyy/
# 复制所有文件和文件夹到指定目录
mv zzz/xxx/yyy/test.txt zzz/
# 移动文件
rm -rf xxx yyy
# 删除xxx和yyy两个目录及其子目录下的所有内容
chmod 777 -R zzz
# 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
cat /etc/sysconfig/network-scripts/ifcfg-ens32
# 查看文件内容
cat -n /etc/sysconfig/network-scripts/ifcfg-ens32
# 查看文件内容(带行号)
tac /etc/sysconfig/network-scripts/ifcfg-ens32
# 查看文件内容(从最后一行反向查看内容)
wc /etc/sysconfig/network-scripts/ifcfg-ens32
# 统计文件内容的行数、单词数、字节数
文件权限八进制语法
# | 权限 | rwx | 二进制 |
---|---|---|---|
7 | 读 + 写 + 执行 | rwx | 111 |
6 | 读 + 写 | rw- | 110 |
5 | 读 + 执行 | r-x | 101 |
4 | 只读 | r– | 100 |
3 | 写 + 执行 | -wx | 011 |
2 | 只写 | -w- | 010 |
1 | 只执行 | –x | 001 |
0 | 无 | — | 000 |
例如, 765 将这样解释:
- 所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。
- 用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。
- 其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。
Vim文本编辑器
进入插入模式:
iloOaA
i
在当前光标位置,进入到插入模式I
移动到当前光标所在行首,再进入到插入模式a
在当前光标位置之后,进入到插入模式A
移动到当前光标位置所在行尾,再进入到插入模式o
在当前光标下一行,进入到插入模式O
在当前光标上一行,进入到插入模式常用指令:
v
、V
、ctrl+v
进入可视模式(字符可视化、行可视化、块可视化)h j k l
上下左右u
撤销ctrl+r
重做X
删除单个字符G
定位指定的行^ $
定位到行开头结尾dd d$
剪切yy y$
复制p
粘贴r
替换单个字符:
进入命令模式esc
回到正常模式
命令模式:
/
查找s/old/new/
替换w
写入文件W
另存文件q
退出q!
退出不保存!cmd
执行命令
压缩及解压
zip xxx.zip file
# 压缩单个文件
zip -r xxx.zip file1 file2 dir1
# 压缩多个文件及目录
unzip xxx.zip
# 解压
tar --exclude=dir1/file1 -zcvf xxx.tar dir1
# 将dir1进行压缩时,排除其中的file1,压缩后的文件名为 xxx.tar
tar -zxvf xxx.tar
# 解压
系统服务
service firewalld status
# 查看服务状态
service firewalld start
# 启动服务
service firewalld restart
# 重启服务
service firewalld stop
# 停止服务
systemctl enable firewalld
# 开机自启动
systemctl disable firewalld
# 关闭开机自启动
进程
ps -ef
# 显示所有进程
ps -ef|grep java
# 根据关键词过滤进程
kill -9 pid号
# 杀死指定pid号的进程 参数:1 (HUP):重新加载进程;9 (KILL):杀死一个进程;15 (TERM):正常停止一个进程
网络
ifconfig
# 查看所有网卡信息
ifconfig ens32
# 查看指定网卡信息
route -n
# 查看路由表
netstat -lntp
# 查看所有监听端口
netstat -antp
# 查看已建立的TCP连接
netstat -lutp
# 查看TCP/UDP状态信息
scp root@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/
# 从远端复制文件到本地目录
scp -r root@10.10.10.10:/opt/soft/mongodb /opt/soft/
# 从远端复制目录到本地目录
scp /opt/soft/java.tar.gz root@10.10.10.10:/opt/soft/scptest
# 上传本地文件到远程机器指定目录
scp -r /opt/soft/java_home root@10.10.10.10:/opt/soft/scptest
# 上传本地目录到远程机器指定目录
磁盘
fdisk -l
# 查看所有磁盘分区信息
swapon -s
# 查看所有交换区信息
df -h
# 查看磁盘容量、已用、可用、已用百分比及挂载点
du -sh /home/
# 递归查看指定目录总容量
mount /dev/hda2 /mnt/hda2
# 挂载hda2
mount -t ntfs /dev/sdc1 /mnt/usbhd1
# 挂载指定文件系统的类型
mount -o loop xxx.iso /mnt/cdrom
# 挂载iso文件
mount /dev/sda1 /mnt/usbdisk
# 挂载usb设备
umount -v /dev/sda1
# 通过设备名卸载
umount -v /mnt/mymnt
# 通过挂载点卸载
用户及用户组
cut -d: -f1 /etc/passwd
# 查看系统中的所有用户
cut -d: -f1 /etc/group
# 查看系统中的所有用户组
useradd new_account
# 创建用户
groupadd new_group
# 创建用户组
id new_account
# 查看指定账号信息
#uid=1001(new_account) gid=1001(new_account) 组=1001(new_account)
groups new_account
# 查看指定账号所在组
usermod -aG new_group new_account
# 添加用户到组
# uid=1001(new_account) gid=1001(new_account) 组=1001(new_account),1002(new_group)
usermod -g new_group new_account
# 修改用户组
# uid=1001(new_account) gid=1002(new_group) 组=1002(new_group)
groupmod -n new_group_rename new_group
# 重命名用户组
groupdel new_account
# 删除用户组
userdel -r new_account
# 删除用户
su - new_account
# 切换用户
passwd
# 修改登录密码
passwd new_account
# 修改某个账号的登录密码
w
# 查看活动用户
last
# 查看用户登录日志
crontab -l
# 当前用户计划任务
包管理
DPKG
Debian package manager
APT
Advanced package tool 是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。
apt-cache search pkg_name
# 查找程序包
apt-cache show pkg_name
# 获取包概览信息
apt-get install pkg_name
# 安装、升级软件包
apt-get purge pkg_name
# 卸载软件(含配置)
apt-get remove pkg_name
# 卸载软件(不含配置)
apt-get update
# 更新包索引
apt-get upgrade
# 更新已安装的软件包
apt-get clean
# 清理缓存
RPM
redhat package manager 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。
YUM
Yellow dog Updater, Modified 是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
附录
Linux 命令大全 👉 https://www.w3cschool.cn/linux/linux-command-manual.html