Linux入门学习

1. Linux基本操作

1.1 文本登录

文本方式登陆:

  • 输入用户名和密码
  • /etc/passwd文件对照
  • /etc/shadow文件对照
  • 启动相应的外壳程序
  • 用户得到一个虚终端,通过Shell与系统交互
  • 进入到用户的家目录

passwd文件存放的用户信息:用户名、用户的id,用户所属的组id,用户的家目录,以及用户所使用的一些shell程序。 shadow存放的是与密码相关的信息:包含的是用户加密过的密码,以及密码过期的时间等等..。

当输入的密码和用户名验证通知之后,系统会启动一个程序,叫做外壳程序(也就是shell),并且获得一个终端,然后可以和系统交互了,并且进入到用户的家目录。

1.2 口令文件格式

口令文件格式:

  • username:用户名
  • password:密码
  • uid:用户标识号
  • gid:组标识号
  • comment:备注信息(可选)
  • home:家目录
  • shell:shell程序

口令文件格式:root:x:0:0:root:/root:/bin/bash

这个信息保存在/etc/passwd文件中

查看密码文件的内容,并且具有分页的功能:cat /etc/passwd | more

查看shadow文件内容:cat /etc/shadow | more,发现权限不够。

1
2
ubuntu@VM-12-11-ubuntu:~/my-website$ cat /etc/shadow | more
cat: /etc/shadow: Permission denied

增加权限:sudo cat /etc/shadow | more

系统将用户输入的密码进行加密,然后将加密过的密码和shadow文件的密码进行比较,验证通过的话才运行用户登录,然后在启动一个shell程序,这个shell程序就是口令文件配置的shell,然后为这个shell获得一个控制终端,最后将用户的当前目录更改到用户的家目录,这个家目录也是存放在密码文件当中的。

1.3 Linux登录时Shell环境文件

该节内容了解即可!!!

  • /etc/bashrc:包含系统定义的命令别名和bash的环境变量定义。
  • /etc/profile:包含系统的环境定义,并指定启动时必须运行的程序。
  • /etc/inputrc:包含系统的键盘设定,以及针对不同终端程序的键位配置信息。
  • $HOME/.bashrc:包含为用户定义的命令别名和bash的环境变量定义。
  • $HOME/.bash_profile:包含为用户定义的环境变量,并指定用户登录时需要启动的程序
  • $HOME/.inputrc:包含用户的键盘设定,以及针对用户终端的键位配置信息

1.4 多终端登录

Linux预设提供了六个命令窗口终端机让我们来登录。

  • 默认我们登录的就是第一个窗口,也就是tty1,这个六个窗口分别为tty1,tty2 … tty6,按下Ctrl + Alt + F1 ~ F6 来切换它们。
  • 图形切命令:Ctrl + Alt + F1 ~ F6 /Alt + Shift + Ctrl + F1~F6 (vmware)
  • 命令切图形:Ctrl + Alt + F7 / Alt + Space + F1~F6 (vmware)

虚终端:Linux主机上的键盘和显示器它被多个终端共享,这样的终端称为虚终端。

物理终端: 物理终端是通过串口与主机相连的,每个物理终端都有自己的键盘和显示器,但没cpu(也就是说基本没处理能力)。

仿真终端:如vs code、xshell连接。

1.5 简单命令

显示日期:date

显示当月日历:cal

显示一整年的日历:cal 1998

查看谁在使用系统:who

查看我是谁:who am i

清除屏幕:clear

计算器:bc

结束符:ctrl + d

中断前台进程:ctr + c

1.6 man(帮助手册)

Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是man

如:man date

2. Linux基本命令

ls命令

功能说明:显示文件信息

用法示例:ls [option] [file]

选项:

  • -l:除档案名称外,亦将档案型态、权限、拥有者、档案大小等资讯详细列出
  • -a:显示所有档案及目录 (ls内定将档案名或目录名称开头为"".““的视为隐藏档,不会列出)
  • -r:将档案以相反次序显示(原定依英文字母次序)
  • -t:将档案依建立时间之先后次序列出
  • -F:在列出的档案名称后加一符号;例如可执行档则加 “”*””, 目录则加 “”/""
  • -R:若目录下有档案,则以下之档案亦皆依序列出
  • -A:同 -a ,但不列出 “”."" (目前目录) 及 “”.."" (父目录)

显示某目录下所有的文件及子目录的详细信息:ls –lR /test

显示当前目录下所有文件详细信息:ls –l

3. Bash基础

3.1 通配符

  • *:匹配所有字符;示例:ls *.o
  • ?:匹配所有的单个字符;示例:ls net???
  • [a-z]:匹配属于a到z范围集合内的一个字符;示例:ls [a-i]*
  • […]:与方括号内的某个字符匹配;示例:ls [abc]*.c
  • [!…]或[^…]:与不在括号内的某个字符匹配;示例:ls [^a]*.c
  • {c1,c2}:同c1或c2集合匹配;示例:ls {[0-9]*,[acr]}

3.2 输入/输出重定向

  • ls -l /usr/tmp >dir
  • ls -l /usr/tmp »dir
  • ls /usr/tmp 2>err.file
  • ls /usr/tmp &>output.file
  • wc </etc/passwd

3.3 管道

管道指的是,将前一条命令的标准输出,作为后一条命令的标准输入。它实际上是进程通讯的一种手段,在内核的表现形式就是一个内存缓冲区。

显示当前的一些进程:ps aux

查找更bash相关的进行:ps aux | grep bash,在此基础上还可以过滤叼grep的信息:ps aux | grep bash | grep -v grep

3.4 后台作业

后台执行:

1
2
3
4
ubuntu@VM-12-11-ubuntu:~/workspace$ wc &
[1] 239173

[1]+  Stopped                 wc

查看状态:

1
2
ubuntu@VM-12-11-ubuntu:~/workspace$ jobs
[1]+  Stopped                 wc

fg,将一个后台作业转到前台:

1
2
ubuntu@VM-12-11-ubuntu:~/workspace$ fg
wc

ctr + z,可以将一个前台进程停止掉

1
2
^Z
[1]+  Stopped                 wc

bg,将一个停止状态的作业转到后台执行:

1
2
3
4
ubuntu@VM-12-11-ubuntu:~/workspace$ bg
[1]+ wc &

[1]+  Stopped                 wc

3.5 历史记录

bash在送入命令时,会将这些命令保存在历史表里,可以用history命令查看历史表。

存放在~/.bash_history文件当中

3.6 命令补全

在送入命令的时候,可以按tab键,Shell就会试图补全该命令

3.7 别名

  • 如果命令太长或者不符合用户的习惯,那么为它指定一个别名是不错的办法。
  • 查看当前环境中的别名:alias
  • 创建别名:alias cls=‘clear’
  • 删除别名:unalias cls
  • 如果需要一直使用别名,可以在.bashrc文件中配置别名。
  • 如果需要所有用户都使用别名可以在/etc/bashrc文件中配置

可以给一些命令取一些其他名称,如:alias cls='clear',需要注意的是=两边不能有空格,原命令需要用单引号包裹。

清除别名:unalias cls

这样的操作只能对当前的shell程序有效,如何让该用户一直效果,需要配置到~/.bashrc文件中:

1
alias cls='clear'

再次执行:

1
2
3
ubuntu@VM-12-11-ubuntu:~/workspace$ cls

Command 'cls' not found, but there are 17 similar ones.

发现没效果,这是因为用户已经登录了,需要重新执行一下~/.bashrc文件,这个文件会在用户登录的时候执行:

1
ubuntu@VM-12-11-ubuntu:~/workspace$ . ~/.bashrc 

如果想让所有用户都起效果,需要配置/etc/bash.bashrc文件。

4. 文件系统

4.1 什么是文件系统

  • A directory structure contained within a disk drive or disk area(文件系统是包括在一个磁盘或分区的目录结构)
  • A method of organising files on a disk, eg NTFS, FAT,Sytem V,ext2,ext3。(文件系统是在一个磁盘组织文件的方法,如NTFS,FAT,Sytem V,ext2,ext3)
  • 刚买回来的硬盘是没有文件系统的,只有当它用FDISK这样的工具进行分区与格式化之后才有,这个过程称为建立文件系统。
  • Linux系统中每个分区都是一个文件系统,有它自己的顶层目录和下面的目录层次结构。并将一个文件系统的顶层目录装配到另一个文件系统的子目录上形成一个总的目录层次结构。

三个文件系统形成一个层次结构:

磁盘组织文件首先要解决的一个问题是,磁盘分区。磁盘上面有那些分区,这个分区实际上是保存在磁盘上面的一个零磁道、零扇区上面512个字节的扇区上的,它不能保存在内存当中,因为内存中的数据一旦关机就消失了,那么在开机的时候就无法读取到这个磁盘上的分区,也就是说磁盘的分区应该由磁盘自身来维护。另外磁盘不光管理磁盘分区表,还应该管理磁盘的一些使用状况,如:那些空间是被使用的,那些空间是空闲的。所以磁盘不能存放实际大小空间的数据,要留一部分的空间来管理自身。不同的管理方式就导致了不同的分区格式,如NTFS,FAT,Sytem V,ext2,ext3)。

需要注意的是,根分区地下的目录或者说路径,不一定都属于根分区。而windows地下的目录一定属于上层目录。

4.2 Linux主要目录结构

  • /etc:存放Linux系统管理中的各种配置文件和子目录
  • /sbin:存放系统管理员的系统管理程序
  • /dev:存放系统所使用的各种外设(外设入口文件)
  • /bin:系统常用命令(内部命令)
  • /boot:系统启动时所使用的各种文件
  • /lib:存放系统中的共享动态连接库
  • /proc:存放系统信息文件,与内存映像
  • /root:root用户的主目录
  • /home:该目录下存放了各个用户的工作目录
  • /usr:存放系统应用程序(可以说是外围工具、程序或命令);/usr/bin;/usr/lib;/usr/include跟开发相关

4.3 Linux文件类型

  • 普通文件:字节集合,分为文本文件与二进制文件
  • 目录文件:目录好比一个容器,用来存放其他文件和目录。
  • 特殊文件:也称设备文件,代表着某种设备,一般放在/dev目录下。
  • 符号连接文件:它是一个文本文件,其中包含它提供连接的另一个文件的路径名。用ls来查看,连接文件的标志用l开头,文件后面以“->”指向所连接的文件。

普通文件,第一位是-,如CMakeLists.txt文件:

1
-rw-rw-r-- 1 ubuntu ubuntu 1064 Dec  6 11:13 CMakeLists.txt

目录文件,第一位是d,如base目录:

1
drwxrwxr-x 2 ubuntu ubuntu 4096 Nov 22 22:34 base/

特殊文件:

字符设备文件,第一位是c

1
2
$ ll /dev/tty
crw-rw-rw- 1 root tty 5, 0 Dec 13 19:51 /dev/tty

块设备文件,第一位是b

1
2
$ ls -l /dev/vda1 
brw-rw---- 1 root disk 252, 1 Dec 13 19:51 /dev/vda1

符号连接文件,也称为软连接文件

查看分区状况:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$ sudo fdisk -l
Disk /dev/loop0: 63.24 MiB, 66301952 bytes, 129496 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


Disk /dev/loop1: 97.98 MiB, 102711296 bytes, 200608 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


Disk /dev/loop2: 49.64 MiB, 52031488 bytes, 101624 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


Disk /dev/loop3: 97.97 MiB, 102703104 bytes, 200592 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


Disk /dev/vda: 40 GiB, 42949672960 bytes, 83886080 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: gpt
Disk identifier: 884D39AE-2030-4231-B486-520515A9ADD7

Device     Start      End  Sectors Size Type
/dev/vda1   2048     4095     2048   1M BIOS boot
/dev/vda2   4096 83886046 83881951  40G Linux filesystem

4.4 mount,umount

  • 如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点
  • 特殊设备如光驱,我们不能直接访问,必须先挂载(mount)到指定目录,如:mount /dev/cdrom /mnt/cdrom
  • 与mount对应的是umount命令,用法如下:umount /mnt/cdrom

查看各个分区的挂载点:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            946M     0  946M   0% /dev
tmpfs           199M 1016K  198M   1% /run
/dev/vda2        40G   19G   20G  49% /
tmpfs           992M   24K  992M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           992M     0  992M   0% /sys/fs/cgroup
/dev/loop0       64M   64M     0 100% /snap/core20/1738
/dev/loop1       98M   98M     0 100% /snap/hugo/14702
/dev/loop2       50M   50M     0 100% /snap/snapd/17883
/dev/loop3       98M   98M     0 100% /snap/hugo/14869
tmpfs           199M     0  199M   0% /run/user/1000

/dev/shm/ 下创建的文件都在内存中

查看u盘的分区设备号,可以通过fdisk -l来得到:

比如将u盘(/dev/sdc5)挂载到mnt下:

1
2
3
$ cd /mnt/
$ mkdir udisk
$ mount /dev/sdc5 /mnt/udisk/

取消挂载:

1
$ umount /mnt/udisk/

4.5 硬链接

  • 索引结点号(i节点号):Linux对存放在磁盘中的每一个文件,都分配一个号码,称为索引结点号。
  • 索引结点连接:目录中每一对文件名称和索引结点号称为一个连接(link)。
  • 创建一个连接可以用ln命令。
  • 查看文件的索引结点号可以用ls -i命令

单个文件多个连接:

i节点号,实际上是某一个分区上的数组入口的索引号,每个分区都有很多个i节点号,把它组织到一个数组当中。每一个节点号又跟一个索引节点相关。索引节点保存了一个文件的管理信息,比如:文件是什么时候创建的,文件属于谁,文件的数据块存在磁盘分区的什么位置。

目录也是一个文件,目录实际上是文件的名称+索引节点号 形成一张表格,因为它是一个容器,这张表格记录了目录底下具有那些文件。

查看某一文件的索引节点号:

1
2
3
ubuntu@VM-12-11-ubuntu:~/workspace$ touch a
ubuntu@VM-12-11-ubuntu:~/workspace$ ls -li a
659008 -rw-rw-r-- 1 ubuntu ubuntu 0 Dec 25 18:17 a

可以用ln命令创建一个连接:

1
2
ubuntu@VM-12-11-ubuntu:~/workspace$ ls -li b
659008 -rw-rw-r-- 2 ubuntu ubuntu 0 Dec 25 18:17 b

可以发现,文件a的索引号和b是一样的,也就是说,文件a和b共享了空一块磁盘空间。现在a和b对应的连接数已经变成2了,只有当a和b都被删除了,该文件才会被删除。

创建一个目录文件,并查看文件信息:

1
2
3
ubuntu@VM-12-11-ubuntu:~/workspace$ mkdir temp
ubuntu@VM-12-11-ubuntu:~/workspace$ ls -ld temp
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 25 18:25 temp

可以发现,temp目录文件一被创建,它的连接数就变成了2。那是因为temp文件有两个名称,temp和temp/.

若在temp目录下再创建一个目录文件:

1
2
3
4
5
6
7
ubuntu@VM-12-11-ubuntu:~/workspace$ cd temp/
ubuntu@VM-12-11-ubuntu:~/workspace/temp$ mkdir temp2
ubuntu@VM-12-11-ubuntu:~/workspace/temp$ ls -lid temp2/
656443 drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 25 18:30 temp2/
ubuntu@VM-12-11-ubuntu:~/workspace/temp$ cd ..
ubuntu@VM-12-11-ubuntu:~/workspace$ ls -lid temp
660232 drwxrwxr-x 3 ubuntu ubuntu 4096 Dec 25 18:30 temp

temp的连接数变成了3,temp文件现在有三个名称,temp、temp/.和temp/temp2/..

4.6 硬连接与软连接的区别

  • 符号连接:使用索引连接的问题在于不能在不同的分区建立连接,为解决这个问题引入了符号连接。符号连接可以用带-s参数的ln命令来建立
  • 为了与符号连接区别,我们把索引结点连接称为硬连接(hard link) ,符号连接称为软连接(soft link)。

5. Linux 管理命令

5.1 df、du

df只能查看磁盘分区的使用状况

df –h 以直观的方式显式磁盘分区使用状况

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
ubuntu@VM-12-11-ubuntu:~/workspace$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            946M     0  946M   0% /dev
tmpfs           199M 1016K  198M   1% /run
/dev/vda2        40G   19G   20G  49% /
tmpfs           992M   24K  992M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           992M     0  992M   0% /sys/fs/cgroup
/dev/loop0       64M   64M     0 100% /snap/core20/1738
/dev/loop1       98M   98M     0 100% /snap/hugo/14702
/dev/loop2       50M   50M     0 100% /snap/snapd/17883
/dev/loop3       98M   98M     0 100% /snap/hugo/14869
tmpfs           199M     0  199M   0% /run/user/1000

可以查看某个目录到底属于那个分区:

1
2
3
ubuntu@VM-12-11-ubuntu:~$ df workspace/
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/vda2       41174636 19119444  20282504  49% /

du查看某个目录使用状况

1
2
3
4
ubuntu@VM-12-11-ubuntu:~$ du -h workspace/
4.0K    workspace/temp/temp2
8.0K    workspace/temp
20K     workspace/

只显示当前目录的情况:

1
2
ubuntu@VM-12-11-ubuntu:~$ du -sh workspace/
20K     workspace/

5.2 free

free查看内存的使用情况:

1
2
3
4
ubuntu@VM-12-11-ubuntu:~$ free
              total        used        free      shared  buff/cache   available
Mem:        2030144      719200      127384        2620     1183560     1121296
Swap:             0           0           0
  • total:物理内存
  • used:已使用
  • free:剩余的
  • buffers:系统分配但未被使用的buffer
  • cached:系统分配但未被使用的cache

5.3 ps

ps 用来查看进程

查看当前用户所启用的进程:

1
2
3
4
ubuntu@VM-12-11-ubuntu:~$ ps
    PID TTY          TIME CMD
2721295 pts/0    00:00:00 bash
2754746 pts/0    00:00:00 ps

显示系统中所有启动的进程:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
ubuntu@VM-12-11-ubuntu:~$ ps -aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
.............................................................................
root     2743227  0.0  0.0      0     0 ?        I    20:07   0:00 [kworker/0:2]
root     2745627  0.0  0.0      0     0 ?        I    20:23   0:00 [kworker/1:0-events]
root     2751717  0.0  0.0      0     0 ?        I    20:57   0:00 [kworker/u4:1-events_power_efficient]
root     2753414  0.0  0.0      0     0 ?        R    21:04   0:00 [kworker/u4:0-events_unbound]
ubuntu   2754242  0.0  0.0   5476   584 ?        S    21:08   0:00 sleep 180
root     2755001  0.0  0.0      0     0 ?        I    21:10   0:00 [kworker/u4:2]
root     2755002  0.0  0.4  13480  8340 ?        Ss   21:10   0:00 sshd: unknown [priv]
sshd     2755003  0.0  0.2  12176  4480 ?        S    21:10   0:00 sshd: unknown [net]
ubuntu   2755015  0.0  0.1   9076  3564 pts/0    R+   21:10   0:00 ps -aux

多出父进程列:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
ubuntu@VM-12-11-ubuntu:~$ ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
......................................................................
ubuntu   2755135 2720849  0 21:11 ?        00:00:00 sleep 180
root     2755414     866  0 21:12 ?        00:00:00 sshd: root [priv]
root     2755421     866  0 21:12 ?        00:00:00 sshd: root [priv]
sshd     2755428 2755414  0 21:12 ?        00:00:00 sshd: root [net]
sshd     2755448 2755421  0 21:12 ?        00:00:00 sshd: root [net]
root     2755464     866  1 21:12 ?        00:00:00 sshd: unknown [priv]
sshd     2755465 2755464  0 21:12 ?        00:00:00 sshd: unknown [net]
ubuntu   2755474 2720946  0 21:12 ?        00:00:00 /bin/sh -c /usr/bin/ps -ax -o pid=,ppid=,pcpu=,pmem=,command=
ubuntu   2755475 2721295  0 21:12 pts/0    00:00:00 ps -ef

5.4 top

  • top相当于free+ps

top用来观察当前进程的一些动态变化(类似Windows的任务管理器):

1
$ top

按q退出

5.5 kill

kill命令用向一个进程发送信号

  • kill -l:列出信号列表
  • kill -9 pid:杀死pid进程
  • killall 进程名称:杀死名称对应的所有进程

显示所有的信号列表:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
ubuntu@VM-12-11-ubuntu:~$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

杀死某一个进程:kill -9 pid

杀死名称对应的所有进程:killall 进程名称

5.6 文件备份(tar)

  • 功能说明:用来创建归档(档案)文件,备份文件及恢复文件,另外tar命令也有压缩与解压缩的功能
  • 用法示例:tar [option] [file]

选项:

  • -c:创建一个新的归档
  • -r:备份内容从档案尾开始存放(追加)
  • -u:备份新的及修改过的文件(备份更新)
  • -x:将文件从归档中恢复到磁盘上
  • -t:显示归档中文件的文件名
  • -v:显示执行过程中的文件清单
  • -f:用来指定所用介质的设备文件名

tar实例:

  • tar -cvf text.tar text:创建一个备份档案
  • tar -tvf text.tar:查看一个备份档案内容列表
  • tar -xvf text.tar:从备份档案中提取文件
  • tar -zcvf text.tar.gz text:备份档案并压缩
  • tar -zxvf text.tar.gz:从压缩包中提取文件

创建一个文件归档(压缩):

1
2
3
4
5
6
7
ubuntu@VM-12-11-ubuntu:~$ tar -cvzf workspace.tar workspace
workspace/
workspace/temp/
workspace/temp/temp2/
workspace/b
workspace/a
workspace/test.txt

恢复一个文件归档(解压):

1
2
3
4
5
6
7
8
ubuntu@VM-12-11-ubuntu:~$ mkdir temp_workspace
ubuntu@VM-12-11-ubuntu:~$ tar -xvzf workspace.tar -C temp_workspace
workspace/
workspace/temp/
workspace/temp/temp2/
workspace/b
workspace/a
workspace/test.txt

Linux 文件权限

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
ubuntu@VM-12-11-ubuntu:~$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,ubuntu
tty:x:5:syslog
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:ubuntu
floppy:x:25:
tape:x:26:
sudo:x:27:ubuntu
audio:x:29:
dip:x:30:ubuntu
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:
sasl:x:45:
plugdev:x:46:ubuntu
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
systemd-journal:x:101:
systemd-network:x:102:
systemd-resolve:x:103:
systemd-timesync:x:104:
crontab:x:105:
messagebus:x:106:
input:x:107:
kvm:x:108:
render:x:109:
syslog:x:110:
tss:x:111:
uuidd:x:112:
tcpdump:x:113:
ssh:x:114:
landscape:x:115:
lxd:x:116:ubuntu
systemd-coredump:x:999:
ubuntu:x:1000:
ntp:x:117:
bind:x:118:
netdev:x:119:
lighthouse:x:1001:lighthouse
fwupd-refresh:x:120:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
ubuntu@VM-12-11-ubuntu:~$ cat /etc/gshadow
cat: /etc/gshadow: Permission denied
ubuntu@VM-12-11-ubuntu:~$ sudo cat /etc/gshadow
root:*::
daemon:*::
bin:*::
sys:*::
adm:*::syslog,ubuntu
tty:*::syslog
disk:*::
lp:*::
mail:*::
news:*::
uucp:*::
man:*::
proxy:*::
kmem:*::
dialout:*::
fax:*::
voice:*::
cdrom:*::ubuntu
floppy:*::
tape:*::
sudo:*::ubuntu
audio:*::
dip:*::ubuntu
www-data:*::
backup:*::
operator:*::
list:*::
irc:*::
src:*::
gnats:*::
shadow:*::
utmp:*::
video:*::
sasl:*::
plugdev:*::ubuntu
staff:*::
games:*::
users:*::
nogroup:*::
systemd-journal:!::
systemd-network:!::
systemd-resolve:!::
systemd-timesync:!::
crontab:!::
messagebus:!::
input:!::
kvm:!::
render:!::
syslog:!::
tss:!::
uuidd:!::
tcpdump:!::
ssh:!::
landscape:!::
lxd:!::ubuntu
systemd-coredump:!!::
ubuntu:!::
ntp:!::
bind:!::
netdev:!::
lighthouse:!::lighthouse
fwupd-refresh:!::
0%