Linux基础3-系统命令完
Linux基础3-系统命令完
1. 压缩解压缩
1.1 .zip格式
压缩和解压缩
[root@localhost ~]# zip [选项] 压缩包名 源文件或源目录
选项:
-r: 压缩目录
例如:
[root@localhost ~]# zip ana.zip anaconda-ks.cfg
首次使用需要安装
apt install zip # 安装
zip test.zip aaa a9d acc # 文件压缩
文件解压缩
[root@localhost ~] unzip [选项] 压缩包名
选项:
-d: 指定解压缩位置
例如:
[root@localhost ~] unzip -d /tmp/ ana.zip
#把压缩包解压到指定位置
1.2 .gz
[root@localhost ~]# gzip [选项] 源文件
选项:
-c: 将压缩数据输出到标准输出中,可以用于保留源文件
-d: 解压缩
-r: 压缩目录
# “gzip -d 压缩包”和“gunzip 压缩包 进行解压操作
[root@localhost ~]# gunzip install.log.gz
[root@localhost ~]# gzip -d anaconda-ks.cfg.gz
gzip不会进行打包,只可以压缩单独的文件
1.3 bz2 不可压缩目录
[root@localhost ~]# bzip2 [选项] 源文件
选项:
-d: 解压缩
-k: 压缩时,保留源文件
-v: 显示压缩的详细信息
例如:
[root@localhost ~]# bzip2 anaconda-ks.cfg
#压缩成.bz2 格式
[root@localhost ~]# bzip2 -k install.log.syslog
#保留源文件压缩
[root@localhost ~]# bunzip2 anaconda-ks.cfg.bz2
[root@localhost ~]# bzip2 -d install.log.syslog.bz2
#两个命令都可以解压缩
1.4 tar格式 不会压缩,会打包
[root@localhost ~]# tar [选项] [-f 压缩包名] 源文件或目录
选项:
-c: 打包
-f: 指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定
要正确指定扩展名
-v: 显示打包文件过程
[root@localhost ~]# tar [选项] 压缩包
选项:
-x: 解打包
-f: 指定压缩包的文件名
-v: 显示解打包文件过程
-t: 测试,就是不解打包,只是查看包中有哪些文件
-C(大) 目录:指定解打包位置
# 解打包到指定目录
tar -xvf abc.tar -C ./dir/
1.5 .tar.gz 和 .tar.bz2
使用 tar 命令直接打包压缩。命令格式如下:
[root@localhost ~]# tar [选项] 压缩包 源文件或目录
选项:
-z: 压缩和解压缩“.tar.gz”格式
-j: 压缩和解压缩“.tar.bz2”格式
例如:.tar.gz 格式
[root@localhost ~]# tar -zcvf tmp.tar.gz /tmp/
#把/tmp/目录直接打包压缩为“.tar.gz”格式
[root@localhost ~]# tar -zxvf tmp.tar.gz
#解压缩与解打包“.tar.gz”格式
例如:.tar.bz2 格式
[root@localhost ~]# tar -jcvf tmp.tar.bz2 /tmp/
#打包压缩为“.tar.bz2”格式,注意压缩包文件名
[root@localhost ~]# tar -jxvf tmp.tar.bz2
#解压缩与解打包“.tar.bz2”格式
再举几个例子:
[root@localhost ~]# mkdir test
[root@localhost ~]# touch test/abc
[root@localhost ~]# touch test/bcd
[root@localhost ~]# touch test/cde
#建立测试目录和测试文件
[root@localhost ~]# tar -zcvf test.tar.gz test/
#压缩
[root@localhost ~]# tar -ztvf test.tar.gz
#只查看,不解压
[root@localhost ~]# tar -zxvf test.tar.gz -C /tmp
#解压缩到指定位置
[root@localhost ~]# tar -zxvf test.tar.gz -C /tmp test/cde
#只解压压缩包中的特定文件,到指定位置
2. 关机重启命令
sync 刷新文件系统的缓存区,重启之前将所有缓存数据存储到硬盘中
sync 命令的基本信息如下。
命令名称:sync。
英文原意:flush file system buffers。
所在路径:/bin/sync。
执行权限:所有用户。
功能描述:刷新文件系统缓冲区。
shutdown 命令的基本信息如下。
命令名称:shutdown。
英文原意:bring the system down。
所在路径:/sbin/shutdown。
执行权限:超级用户。
功能描述:关机和重启
命令的基本格式如下:
[root@localhost ~]# shutdown [选项] 时间 [警告信息]
选项:
-c: 取消已经执行的 shutdown 命令
-h: 关机
-r: 重启
# shutdown更加安全
[root@localhost ~]# reboot
#重启
# 下面两个命令都有可能出问题,不建议使用
[root@localhost ~]# halt
#关机
[root@localhost ~]# poweroff
#关机
init 是修改 Linux 运行级别的命令,也可以用于关机和重启。这个命令并不安全,不建议使用。
[root@localhost ~]# init 0
#关机,也就是调用系统的 0 级别
[root@localhost ~]# init 6
#重启,也就是调用系统的 6 级别
3. 网络命令
3.1 配置IP命令
重启网络服务失败的原因:
- IP冲突
- UUID冲突
3.2 其他命令
[root@localhost ~]# ping [选项] IP
选项:
-b: 后面加入广播地址,用于对整个网段进行探测
-c 次数: 用于指定 ping 的次数
-s 字节: 指定探测包的大小
[root@localhost ~]# netstat [选项]
选项:
-a: 列出所有网络状态,包括 Socket 程序
-c 秒数: 指定每隔几秒刷新一次网络状态
-n: 使用 IP 地址和端口号显示,不使用域名与服务名
-p: 显示 PID 和程序名
-t: 显示使用 TCP 协议端口的连接状况
-u: 显示使用 UDP 协议端口的连接状况
-l: 仅显示监听状态的连接
-r: 显示路由表
例子 1:查看本机开启的端口
这是本机最常用的方式,使用选项“-tuln”。因为使用了“-l”选项,所以只能看到监听状态的
连接,而不能看到已经建立连接状态的连接。例如:
[root@localhost ~]# netstat -tuln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 :::11211 :::* LISTEN
tcp 0 0 :::80 :::* LISTEN
#协议 接收队列 发送队列 本机的 IP 地址及端口号 远程主机的 IP 地址及端口号 状态
例子 2:查看本机有哪些程序开启的端口
如果使用“-p”选项,则可以查看到是哪个程序占用了端口,并且可以知道这个程序的 PID。例
如:
[root@localhost ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2359/mysqld
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 1563/memcached
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1490/sshd
tcp 0 0 :::11211 :::* LISTEN 1563/memcached
tcp 0 0 :::80 :::* LISTEN 21025/httpd
tcp 0 0 :::22 :::* LISTEN 1490/sshd
udp 0 0 0.0.0.0:11211 0.0.0.0:* 1563/memcached
udp 0 0 :::11211 :::* 1563/memcached
#比之前的命令多了一个“-p”选项,结果多了“PID/程序名”,可以知道是哪个程序占用了端口
例子 3:查看所有连接
使用选项“-an”可以查看所有连接,包括监听状态的连接(LISTEN)、已经建立连接状态的
连接(ESTABLISHED)、Socket 程序连接等。因为连接较多,所以输出的内容有很多。例如:
[root@localhost ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN
tcp 0 0 117.79.130.170:80 78.46.174.55:58815 SYN_RECV
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 117.79.130.170:22 124.205.129.99:10379 ESTABLISHED
tcp 0 0 117.79.130.170:22 124.205.129.99:11811 ESTABLISHED
…省略部分内容…
udp 0 0 0.0.0.0:11211 0.0.0.0:*
udp 0 0 :::11211 :::*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 9761 @/var/run/hald/dbus-fr41WkQn1C
…省略部分内容…
# 查看网关
root@hexiubuntults:~# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 ens33
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
3.3 通信命令
[root@localhost ~]#write user1 pts/1
hello
I will be in 5 minutes to restart, please save your data
#向在 pts/1(远程终端 1)登录的 user1 用户发送信息,使用“Ctrl+D”快捷键保存发送的数据
write 命令用于给指定用户发送信息,而 wall 命令用于给所有登录用户发送信息,包括你自己。
执行时,在 wall 命令后加入需要发送的信息即可,例如:
[root@localhost ~]# wall "I will be in 5 minutes to restart, please save your data"
- 登陆终端
- 本地有六个字符终端,tty1-tty6
- 本地图形终端,tty7 ctrl+alt+F7 长按3秒切换
- pts 远程终端
w # 列出当前存在的登录用户
write user1 pts/1 向某用户实时发送内容
4. 系统痕迹命令
系统中有一些重要的痕迹日志文件,如 /var/log/wtmp 、 /var/run/utmp 、 /var/log/btmp 、 /var/log/lastlog 等日志文件,如果你用 vim 打开这些文件,你会发现这些文件是二进制乱码。这是由 于这些日志中保存的是系统的重要登录痕迹,包括某个用户何时登录了系统,何时退出了系统,错误 登录等重要的系统信息。这些信息要是可以通过 vim 打开,就能编辑,这样痕迹信息就不准确,所以 这些重要的痕迹日志,只能通过对应的命令来进行查看。
w
w 命令是显示系统中正在登陆的用户信息的命令,这个命令查看的痕迹日志是/var/run/utmp
[root@localhost ~]# w
00:06:11 up 5:47, 2 users, load average: 0.00, 0.01, 0.05
#系统时间 持续开机时间 登陆用户 系统在 1 分钟,5 分钟,15 分钟前的平均负载
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 23:59 7:07 0.08s 0.08s -bash
root pts/2 192.168.252.1 23:42 3.00s 0.44s 0.06s w
-bash 是正在等待 没有操作,w是自己
who
who 命令和 w 命令类似,用于查看正在登陆的用户,但是显示的内容更加简单,也是查看
/var/run/utmp 日志。
[root@localhost ~]# who
root tty1 2018-11-12 23:59
root pts/2 2018-11-12 23:42 (192.168.252.1)
#用户名 登陆终端 登陆时间(来源 IP)
last
last 命令是查看系统所有登陆过的用户信息的,包括正在登陆的用户和之前登陆的用户。这个命
令查看的是/var/log/wtmp 痕迹日志文件。
[root@localhost ~]# last
root tty1 Mon Nov 12 23:59 still logged in
root pts/2 192.168.252.1 Mon Nov 12 23:42 still logged in
root pts/1 192.168.252.1 Mon Nov 12 23:37 - 23:59 (00:22)
root tty1 Mon Nov 12 19:17 - 23:58 (04:41)
root pts/0 192.168.252.1 Mon Nov 12 18:20 - 23:52 (05:32)
reboot system boot 3.10.0-862.el7.x Mon Nov 12 18:18 - 00:22 (06:03)
#系统重启信息记录
root pts/1 192.168.252.1 Mon Nov 12 08:48 - down (01:29)
root pts/1 192.168.252.1 Thu Nov 8 21:04 - 22:29 (01:25)
#用户名 终端号 来源 IP 地址 登陆时间 - 退出时间
lastlog
lastlog 命令是查看系统中所有用户最后一次的登陆时间的命令,他查看的日志是/var/log/lastlog
文件。
[root@localhost ~]# lastlog
Username Port From Latest
root tty1 Mon Nov 12 23:59:03 +0800 2018
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
sync **Never logged in**
…省略部分内容…
#用户名 终端 来源 IP 登陆时间
# 伪用户和系统用户所有的登陆查看命令
lastb
错误登录信息
lastb 命令是查看错误登陆的信息的,查看的是/var/log/btmp 痕迹日志:
[root@localhost ~]# lastb
(unknown tty1 Mon Nov 12 23:58 - 23:58 (00:00)
root tty1 Mon Nov 12 23:58 - 23:58 (00:00)
#错误登陆用户 终端 尝试登陆的时间
5. 挂载命令
硬件和已经建立的空目录进行连接的过程称为挂载
mount 命令基本格式
linux 所有存储设备都必须挂载使用,包括硬盘
命令名称:mount
命令所在路径:/bin/mount
执行权限:所有用户
说了这么多,命令的具体格式如下:
[root@localhost ~]# mount [-l]
#查询系统中已经挂载的设备,-l 会显示卷标名称
[root@localhost ~]# mount –a
#依据配置文件/etc/fstab 的内容,自动挂载
[root@localhost ~]# mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] \
设备文件名 挂载点
#\代表这一行没有写完,换行
选项:
-t 文件系统: 加入文件系统类型来指定挂载的类型,可以 ext3、ext4、iso9660
等文件系统。具体可以参考表 9-1
-L 卷标名: 挂载指定卷标的分区,而不是安装设备文件名挂载
-o 特殊选项: 可以指定挂载的额外选项,比如读写权限、同步异步等,如果不指定
则默认值生效。
# 挂载首先有一个空目录 其次知道挂载的光盘内容 使用的是mount
# 在mnt中创建目录cdrom
查看挂载的现有设备
mount
挂载的硬盘 挂在位置 挂载类型 操作权限
5.1 挂载光盘
设备文件名称和新建的空目录连在一起就是挂载
- 习惯在
/mnt中创建cdrom
挂载光盘 - 下一步要知道光盘的设备名称,这个名称默认是
/dev/sr0
这里有两个文件,dev/cdrom
是软连接,但是设备推荐使用源文件dev/sr0
root@hexiubuntults:/dev# mount /dev/cdrom /mnt/cdrom/
mount: /mnt/cdrom: WARNING: device write-protected, mounted read-only. # 提示没有写入权限
下一步,访问光盘数据
挂载完成了,在挂在之后,退出光盘的话,需要弹出光盘
root@hexiubuntults:/mnt/cdrom# umount /mnt/cdrom
umount: /mnt/cdrom: target is busy.
root@hexiubuntults:/mnt/cdrom# umount /dev/sr0
umount: /mnt/cdrom: target is busy.
root@hexiubuntults:/mnt/cdrom# cd .. # 挂载退出前要记得退出加载目录,然后采用挂载点或者设备点,弹出挂载
root@hexiubuntults:/mnt# umount /dev/sr0
root@hexiubuntults:/mnt#
注意:挂载点应该是空目录,因为不是空目录,所以挂载的时候会发生问题。不使用空目录的话,原始数据无法访问
5.2 挂载U盘
查看系统识别的硬盘
root@hexiubuntults:/mnt/cdrom# fdisk -l
Disk /dev/fd0: 1.42 MiB, 1474560 bytes, 2880 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x90909090
Device Boot Start End Sectors Size Id Type
/dev/fd0p1 2425393296 4850786591 2425393296 1.1T 90 unknown
/dev/fd0p2 2425393296 4850786591 2425393296 1.1T 90 unknown
/dev/fd0p3 2425393296 4850786591 2425393296 1.1T 90 unknown
/dev/fd0p4 2425393296 4850786591 2425393296 1.1T 90 unknown
Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 976CC99B-58C1-424D-8612-083B74046476
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 167776255 167772160 80G Linux filesystem
/dev/sda3 167776256 178262015 10485760 5G Linux filesystem
/dev/sda4 178262016 199233535 20971520 10G Linux swap
root@hexiubuntults:/mnt/cdrom#
插入U盘后,可查看,已经接入系统中
mount -a
# 扫描下/etc/fstab中的挂载文件,有报错的话,会抛出,但是也不一定
\ 换行符号,需要在后续再加上内容可执行
mount
vim /etc/fstab # 查看下挂载的默认配置
#!/bin/bash
上面这句话认定这个文件是shell脚本,不可以省略这句话
5.2.1 NTFS挂载
NTFS挂载在linux中是只读的,不可以写入的
- Linux需要驱动,需要NTFS的驱动
驱动直接放入系统内核之中。这种驱动主要是系统启动加载必须的驱动,数量较少。
驱动以模块的形式放入硬盘。大多数驱动都已这种方式保存,保存位置在
.10.0-862.el7.x86_64/kernel/中。
驱动可以被 Linux 识别,但是系统认为这种驱动一般不常用,默认不加载。如果需要加载这
种驱动,需要重新编译内核,而 NTFS 文件系统的驱动就属于这种情况。
硬件不能被 Linux 内核识别,需要手工安装驱动。当然前提是厂商提供了该硬件针对 Linux
的驱动,否则就需要自己开发驱动了
/lib/modules/5.4.0-181-generic/kernel
# 驱动以模块形式存储在硬盘中了
-
驱动可以被 Linux 识别,但是系统认为这种驱动一般不常用,默认不加载。如果需要加载这种驱动,需要重新编译内核,而 NTFS 文件系统的驱动就属于这种情况。
编译内核一般只在嵌入式下使用,需要安装不同的内核内容
https://blog.csdn.net/o911911/article/details/44997377
https://blog.csdn.net/fujian9544/article/details/105451619
安装ntfs-3g
莫名其妙好了
1076 fdisk -l
1077 mount -t exfat /dev/sdc1 /mnt/usb/
1078 cd usb/