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 在当前光标上一行,进入到插入模式

常用指令:

  • vVctrl+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 的适用度。

https://www.runoob.com/linux/linux-comm-rpm.html

YUM

Yellow dog Updater, Modified 是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。

基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

https://www.runoob.com/linux/linux-yum.html

附录

Linux 命令大全 👉 https://www.w3cschool.cn/linux/linux-command-manual.html


Linux命令
https://元气码农少女酱.我爱你/611fb94ae4b4/
作者
元气码农少女酱
发布于
2023年5月2日
许可协议