Linux基础及常用命令
通过Linux服务器端自带的SSH(Secure Shell)服务(默认端口 号为),客户端以SSH协议实现远程连接、登录服务器
[root@localhost ~]#
[root@localhost Documents]#
[snow@localhost ~]$
@前:当前登录的用户账号
@后:系统的主机名或ip地址
~:当前登录账号的属主目录
Documents:当前的工作路径
#:超级管理员
$:普通账号
常用命令
[root@localhost ~]# date -s "2023-06-16 09:24:00"
Fri Jun 16 09:24:00 CST 2023
date -s "日期/时间":修改日期时间
hwclock -w:将时间写入BIOS,以免重启服务器后,设置的时间丢失
[root@localhost ~]# touch snow.txt
touch:创建文件,如果文件已经存在,则更新文件的最后修改日期
[root@localhost ~]# pwd
/root
[root@localhost Desktop]# pwd
/root/Desktop
pwd:查看看当前路径地址
[root@localhost ~]# cd Desktop
[root@localhost Desktop]# cd ..
[root@localhost ~]# cd /
[root@localhost /]# cd ~
cd:跳转至某个地址
cd ..:返回上一级目录
/:根目录
~:当前登录账号的属主目录
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg Templates
Desktop Music Videos
Documents Pictures
Downloads Public
[root@localhost ~]# dir
anaconda-ks.cfg initial-setup-ks.cfg Templates
Desktop Music Videos
Documents Pictures
Downloads Public
[root@localhost ~]# ls -l
total 8
-rw-r--r--. 1 root root 0 Jun 3 15:58 123
drwxr-xr-x. 3 root root 15 Jun 3 15:58 2333
drwxr-xr-x. 3 root root 18 Jun 3 16:13 66
-rw-------. 1 root root 1894 Mar 28 2018 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Jun 3 15:54 Desktop
drwxr-xr-x. 2 root root 6 Mar 28 2018 Documents
drwxr-xr-x. 2 root root 6 Mar 28 2018 Downloads
-rw-r--r--. 1 root root 1922 Mar 28 2018 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 Mar 28 2018 Music
drwxr-xr-x. 2 root root 6 Mar 28 2018 Pictures
drwxr-xr-x. 2 root root 6 Mar 28 2018 Public
drwxr-xr-x. 3 root root 15 Jun 3 16:17 snow
-rw-r--r--. 1 root root 0 Jun 3 15:57 snow.txt
drwxr-xr-x. 2 root root 6 Mar 28 2018 Templates
drwxr-xr-x. 2 root root 6 Mar 28 2018 Videos
ls.png
dir.png
ls:查看目录下的文件,会显示不同类型的文件的颜色
dir:查看目录下的文件,不会根据文件类型改变颜色
-l:显示文件详细信息
-d:查看目录自身的信息,而不再是目录中的文件信息
-a:显示所有文件和目录,包含隐藏文件和目录,包含.(当前目录) 和 ..(上级目录)
-A:显示所有文件和目录,包含隐藏文件和目录
-t:根据时间排序
-rw-r--r--. 1 root root 0 Jun 3 15:57 snow.txt
drwxr-xr-x. 2 root root 6 Mar 28 2018 Templates
lrwxrwxrwx. 1 root root 7 Mar 28 2018 /bin -> usr/bin
分段 | 含义 |
---|---|
“-”文件类型 | - 普通文件 d 目录 c 字符设备 s 套接字 p 管道 b 快设备 l 连接 |
rw-r--r-- | 文件读写权限 |
1 | 对文件:文件内容被系统记录的次数 对目录:目录中文件属性的字节数 |
root | 文件所有人 |
root | 文件所有组 |
6 | 文件内容大小 |
7 Mar 28 2018 | 文件最后一次修改的时间 |
fileName | 文件名 |
rw- | r-- | r--
r--:100 —— 4 (只读)
-w-: 010 —— 2 (只写)
--x:001 —— 1 (只可执行)
rw- | r-- | r-- |
---|---|---|
u(所有者的权限) | g(文件组员权限) | o(其他人权限) |
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.30.211.162 netmask 255.255.255.0 broadcast 172.30.211.255
inet6 fe80::f590:fd0a:4fd4:59e5 prefixlen 64 scopeid 0x20<link>
inet6 fe80::b766:af6a:1abe:c864 prefixlen 64 scopeid 0x20<link>
inet6 fe80::5f45:55a0:d616:b21c prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:50:df:68 txqueuelen 1000 (Ethernet)
RX packets 43867 bytes 8170649 (7.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 690 bytes 95246 (93.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 1721 bytes 192299 (187.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1721 bytes 192299 (187.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:12:20:76 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ifconfig:获取ip地址
[root@localhost ~]# ifconfig ens33 172.20.1.233
只是暂时修改 IP地址,当服务器重启后,仍然会恢复原先的设定(读取配置文件的IP)
[root@localhost ~]# ping 172.30.211.168
ping:linux下的ping命令默认是持续长ping,用Ctrl+c可强行停止
-c num:用于指定测试次数(linux下ping命令默认是长 ping,不设置该参数时,则是持续执行,直至用 Ctrl+C 强行停止)
[root@localhost ~]# clear
clear:清屏
[root@localhost Desktop]# ls
snow.txt
[root@localhost Desktop]# rm snow.txt
rm:删除文件,不能删除文件夹
[root@localhost ~]#sudo rm -rf folder
[root@localhost ~]#sudo rm -rf ?.*
sudo:使用管理员权限
-f:强制删除
-r:用于目录删除,递归删除
?:通配符,标识1个字符
*:通配符,标识0 ~ n个字符
[root@localhost ~]# tree
.
├── 123
├── 2333
│ └── 1
├── anaconda-ks.cfg
├── Desktop
├── Documents
├── Downloads
├── initial-setup-ks.cfg
├── Music
├── Pictures
├── Public
├── snow.txt
├── Templates
└── Videos
10 directories, 4 files
tree:树状展示文件夹下内容
[root@localhost ~]# mkdir snow
[root@localhost ~]# mkdir d1/d2/d3/d4 -p
mkdir:创建文件夹
-p:允许创建多级目录的标识
[root@localhost ~]# rmdir snow
[root@localhost dev1]# rmdir d1/d2/d3/d4 -p
rmdir:删除文件夹,仅允许删除空目录
-p:可以删除链路上的文件夹,仅允许删除空目录
[root@localhost ~]# alias cdd1='cd /home/dev1'
[root@localhost ~]# cdd1
[root@localhost dev1]#
[root@localhost dev1]# unalias cdd1
alias:设置别名,快捷指令
unalias:取消别名,解绑
[root@localhost dev1]# cp snow.txt d1/sn.txt
[root@localhost dev1]# tree
.
├── d1
│ └── sn.txt
├── d2
├── d3
├── d4
│ ├── d4.1
│ ├── d4.2
│ └── d4.3
└── snow.txt
7 directories, 2 files
cp:拷贝文件
cp 源文件(或文件夹,可以多个,空格隔开) 目标地址,目标地址可以是文件夹,也可以是文件名(等于复制+改名)
复制文件夹需要加 -r
-u:会判定源文件和目标文件的最后更新时间,源文件比目标文件新才会触发指令
[root@localhost dev1]# mv snow.txt d2
mv:移动,剪切,其他和复制功能一致
移动文件夹时不需要 -r
[root@localhost dev1]# vi a.txt
vi:编辑文件,如果文件不存在,则会创建一个新文件
键盘输入i键进入编辑模式-INSERT
键盘输入R键进入编辑模式-REPLACE
命令行模式:esc键开启/关闭
:q 退出
:w 保存
:w 文件名 另存为
:wq 保存并退出
:q! 强制退出
/word 光标后关键字查询 用n查询下一个
?word 光标前关键字查询 用n查询下一个,反向的
:set nu 显示行号
:set nonu 不显示行号
[root@localhost ~]# cat snow.txt
Hello World !
cat:查看文件内容
-n:显示行号
-b:显示行号,但空行不标注行号
[root@localhost ~]# more +5 -1 initial-setup-ks.cfg
cdrom
more:分页查看,不支持上翻
-num:显示num行,需要加在文件名前
+num:从第num行开始,需要加在文件名前
回车 下翻一行
空格 下翻一页
q 退出
Ctrl + Z 退出
[root@localhost ~]# less -N initial-setup-ks.cfg
less:分页查看,支持上翻
-N:显示行号,需要添加在less后,加在文件后无效
回车 下翻一行
空格 下翻一页
q 退出
Ctrl + Z 退出
[root@localhost ~]# head -3 initial-setup-ks.cfg
[root@localhost ~]# tail -3 initial-setup-ks.cfg
head:显示头部行数内容,默认10行
tail:显示尾部行数内容,默认10行
-num:显示的行数
-F:tail后可加,循环读取,只要被查看的文件有更新,会将文件最新的尾部记录,实时打印在屏幕上,按下 ctrl + Z 退出循环读取状态
[root@localhost ~]# cat -n initial-setup-ks.cfg | head -15 | more -3
1 cdrom
2 # Use graphical install
3 graphical
显示文件initial-setup-ks.cfg内容并显示行号 | 从头部读取15行 | 分页显示,当前显示3行
|:管道命令
[root@localhost dev1]# find ./ -iname msg-20250301.log
./msg-20250301.log
[root@localhost dev1]# find ./ -iname '*0301.log'
./msg-20250301.log
find:查找文件或目录
-iname:-i忽略大小写 -name指定文件名(可以用通配符进行模糊查找)
[root@localhost ~]# grep -in network anaconda-ks.cfg
16:# Network information
17:network --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
18:network --hostname=localhost.localdomain
56:@network-file-system-client
57:@networkmanager-submodules
grep:在文件中查找内容
-in:-i忽略大小写 -n显示行号
-v:反向查找,显示关键字不存在的行内容
-A num:(After)匹配到搜索行 + 下面 num 行
-B num:(Before)匹配到搜索行+上面 num 行
-C num:(Center)匹配到搜索行 + 上下各 num 行
[root@localhost ~]# tar -czvf myfile.tar.gz snow snow.txt 2333
[root@localhost myfolder]# tar -xzvf myfile.tar.gz
tar:打包
-czvf:打包并压缩文件,结果文件名常以 .gz结尾表示(若只打包,则结果文件常以 .tar结尾表示)。用 gzip方式压缩并打包
-xzvf:解压解包文件
-c:将文件打包
-x:将文件解包
-v:打包过程中,显示被打包的文件或目录清单
-f:必须是最后一个选项,后面接要打包后的文件名
-z:用gzip算法压缩,生成 .tar.gz 文件
-j:用 bzip2算法压缩,生成 .tar.bz2 文件
tar -czvf 打包名 被打包的文件
tar -xzvf 被解压的文件
-C:(解压到的)目标路径
[root@localhost ~]$ zip snow mytar.tar
adding: mytar.tar (deflated 97%)
[root@localhost ~]$ unzip snow.zip
zip:压缩文件至zip归档文件中
zip 压缩后的文件名 被压缩的文件
unzip:解压缩
[root@localhost root]# chmod u=rwx,g=rwx,o=rw- anaconda-ks.cfg
chmod:权限修改
rwx:r读-4 w写-2 x执行-1
用-标识无对应权限
也即单一组属性如果是 rwx: 111 > 4+2+1 = 7;如果是 rw-: 110 > 4+2+0 = 6;如果是 ---: 000 >0+0+0 = 0
chmod 777 ... 所有人 (u,g,o) 拥有所有权限 (rwx)
chmod 760 ... 所有者(rwx),所属组(rw-),其他人(---)
u:所有者
g:所有者所在的群组
o:其他用户
a:所有用户
[root@localhost ~]# type cd
cd is a shell builtin
[root@localhost ~]# man cd
type:显示命令存放地
man:显示命令详细信息
内部命令:显示为 ... a shell builtin
外部命令:显示该程序实际存放的地址 (/usr/bin...)
[root@localhost ~]# su snow
[snow@localhost root]$ exit
exit
[root@localhost ~]#
su:切换用户
exit:返回上一个用户账号
[root@localhost home]# id dev1
uid=888(dev1) gid=888(mygroup) groups=888(mygroup),889(mygroup2)
id:显示用户信息
id 用户名
[root@localhost home]# useradd snow
useradd:创建新用户
[root@localhost home]# userdel -r snow
userdel:删除已存在的用户
-r:将该账号的主目录以及邮件文件一并删除(不加参数-r,则仅删除账户,所以一般都需要)
[root@localhost ~]# shutdown -h 10
[root@localhost ~]# shutdown -h 12:00
shutdown:关机
-h:时间,指定时间或延时关机 + n 分钟
-c:未关机前,可以取消之前的shutdown设定
-r:重启
[root@localhost home]# poweroff
poweroff:关机
[root@localhost home]# reboot
reboot:重启
[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 593580 2116 547120 0 0 453 9 189 330 2 2 95 0 0
vmstat:查看整个系统的资源占用情况
[root@localhost ~]# netstat
netstat:显示网络状况
-t:显示TCP协议相关信息
-lnp:用于显示网络连接状况,还可以显示PID和程序名
-an:用于显示网络连接状况
-a:显示所有连线中的scoket
-n:直接使用IP地址,而不通过域名服务器
-l:显示监控中的服务器socket
-p:显示正在使用socket的程序识别码和程序名称
[root@localhost ~]# ps -aux | head -10
ps:显示系统此刻运行中的进程信息
-aux:列出目前所有的正在内存当中的程序(可查看cpu和内存的占用百分比)
-a:所有进程
-u:显示用户
-x:列出所有tty进程,tty是当前所使用的虚拟终端
-e:所有进程,与a略有区别
-f:完整显示进程信息
[root@localhost ~]# kill 233
kill:停止或杀死进程
kill PID:杀进程慢,但安全
kill -9 PID:强制终止进程(更常用。速度快,可能导致程序异常)
[root@localhost ~]# top
top - 15:15:07 up 1 day, 20:03, 3 users, load average: 0.02, 0.02, 0.05
Tasks: 184 total, 1 running, 183 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 s
KiB Mem : 1867024 total, 74088 free, 745004 used, 1047932 buff/cache
KiB Swap: 2097148 total, 2097024 free, 124 used. 881872 avail Mem
top:动态实时监控进程所占系统的资源,3秒刷新一次
load average:(1, 5, 15分钟内)系统平均负载
Tasks:进程数情况
Cpu:使用情况
Mem:内存使用情况
Swap:交换分区使用情况
top -p 进程号1,进程号2,...:监控查看指定程序/命令的资源消耗情况
[root@localhost ~]# free -mt
total used free shared buff/cache available
Mem: 1823 727 72 18 1023 861
Swap: 2047 0 2047
Total: 3871 727 2120
free:查看整个系统内存使用情况
-mt:用MByte为单位,并显示总计数值
-b:以字节为单位
-k:以KByte为单位
-m:用MByte为单位
-t:显示 total (总计)
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 7.0G 11G 41% /
devtmpfs 897M 0 897M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 18M 895M 2% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 183M 4.0K 183M 1% /run/user/42
tmpfs 183M 32K 183M 1% /run/user/0
tmpfs 183M 0 183M 0% /run/user/1000
df:查看系统磁盘空间的占用情况
-h:以易读(容量单位)的方式显示容量 (K, M, GB等)
[root@localhost ~]# yum remove tree
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package tree.x86_64 0:1.6.0-10.el7 will be erased
--> Finished Dependency Resolution
base/7/x86_64 | 3.6 kB 00:00:00
extras/7/x86_64 | 2.9 kB 00:00:00
updates/7/x86_64 | 2.9 kB 00:00:00
Dependencies Resolved
=======================================================================================================
Package Arch Version Repository Size
=======================================================================================================
Removing:
tree x86_64 1.6.0-10.el7 @base 87 k
Transaction Summary
=======================================================================================================
Remove 1 Package
Installed size: 87 k
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Erasing : tree-1.6.0-10.el7.x86_64 1/1
Verifying : tree-1.6.0-10.el7.x86_64 1/1
Removed:
tree.x86_64 0:1.6.0-10.el7
Complete!
[root@localhost ~]# tree
bash: tree: command not found...
[root@localhost ~]# yum install tree -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.qlu.edu.cn
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package tree.x86_64 0:1.6.0-10.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================================================================
Package Arch Version Repository Size
=======================================================================================================
Installing:
tree x86_64 1.6.0-10.el7 base 46 k
Transaction Summary
=======================================================================================================
Install 1 Package
Total download size: 46 k
Installed size: 87 k
Downloading packages:
tree-1.6.0-10.el7.x86_64.rpm | 46 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : tree-1.6.0-10.el7.x86_64 1/1
Verifying : tree-1.6.0-10.el7.x86_64 1/1
Installed:
tree.x86_64 0:1.6.0-10.el7
Complete!
yum:(在线)联网安装
-y:对所有问题都回答 “yes”,不弹出是否确认安装提示框
常见的子命令
rpm:离线安装
-qa:查询当前主机所有已安装的rpm包
-ivh:安装指定的rpm包
-i:安装指定的 rpm包
-v:显示安装细节
-h:显示安装进度
-a:查看所有 rpm包
-q:使用询问的模式(遇上任何问题,rpm都会询问用户先)
-e:卸载已安装的 rpm包
[root@localhost ~]# systemctl
systemctl:列出正在运行中的服务及其状态
systemctl start/stop/status/restart 服务名d —— 启动/停止/查看状态/重启 xxx服务
[root@localhost ~]# systemctl start firewalld
启动防火墙
[root@localhost ~]# systemctl stop firewalld
关闭防火墙
[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-06-05 18:44:20 CST; 1 day 21h ago
Docs: man:firewalld(1)
Main PID: 738 (firewalld)
CGroup: /system.slice/firewalld.service
└─738 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Jun 05 18:44:19 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
Jun 05 18:44:20 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
Jun 05 18:44:20 localhost.localdomain firewalld[738]: WARNING: ICMP type 'beyond-scope' is not sup...6.
Jun 05 18:44:20 localhost.localdomain firewalld[738]: WARNING: beyond-scope: INVALID_ICMPTYPE: No ...e.
Jun 05 18:44:20 localhost.localdomain firewalld[738]: WARNING: ICMP type 'failed-policy' is not su...6.
Jun 05 18:44:20 localhost.localdomain firewalld[738]: WARNING: failed-policy: INVALID_ICMPTYPE: No...e.
Jun 05 18:44:20 localhost.localdomain firewalld[738]: WARNING: ICMP type 'reject-route' is not sup...6.
Jun 05 18:44:20 localhost.localdomain firewalld[738]: WARNING: reject-route: INVALID_ICMPTYPE: No ...e.
Hint: Some lines were ellipsized, use -l to show in full.
查看防火墙状态
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
setenforce:更改工作模式 需要在root下执行
0:切换成 permissive(宽容模式),临时关闭内核防火墙,无需重启机器,重启后会重置
1:切换成 enforcing(强制模式)
getenforce:查看当前模式
[root@localhost html]# wget -O pic.jpg https://k.sinaimg.cn/n/news/transform/310/w710h400/20230605/6dff-f00adf586b8a396bfb3ef7ddcf815435.jpg/w160h90z1l50t1q70f19de.jpg
wget http://www.xxxx.com/file:从网站下载文件到本地