Linux 部分
一、 文件基本属性
系统目录结构
/
- /bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 - /boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。 - /dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。 - /etc:
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。- 账号和密码都可以在/etc/passwd和/etc/shadow这两个文件中找到
- /etc/passwd只有系统管理员才可以修改,其他用户可以查看
- /etc/shadow其他用户看不了
- /etc/passwd
- 每一行又通过[:]分为七个部分,它们的含义分别为:
- 账号名称;
- 原先用来保存密码的,现在密码都放在/etc/shadow中,所以这里显示x;
- UID,也就是使用者ID。默认的系统管理员的UID为0,我们添加用户的时候最好使用1000以上的UID,1-1000范围的UID最好保留给系统用;
- GID,也就是群组ID;
- 关于账号的一些说明信息;
- 账号的家目录,家目录就是你登陆系统后默认的那个目录;
- 账号使用的shell。
- /etc/shadow
- 也是由[:]来进行分割,但是这里一共分出来九个栏目,每个栏目的解释如下:
- 账户名称;
- 加密后的密码,如果这一栏的第一个字符为!或者*的话,说明这是一个不能登录的账户;
- 最近改动密码的日期(这个是从1970年1月1日算起的总的天数)。那怎么才能知道今天距1970年1月1日有多少天呢?很简单,你改下密码,然后看下这个栏目中的数字是多少就可以了;
- 密码不可被变更的天数:设置了这个值,则表示从变更密码的日期算起,多少天内无法再次修改密码,如果是0的话,则没有限制;
- 密码需要重新变更的天数:密码经常更换才能保证安全,为了提醒某些经常不更换密码的用户,可以设置一个天数,强制让用户更换密码,也就是说该用户的密码会在多少天后过期,如果为99999则没有限制;
- 密码过期预警天数:如果在上面设置了密码需要重新变更的天数,则会在密码过期的前多少天进行提醒,提示用户其密码将在多少天后过期;
- 密码过期的宽恕时间:如果在上面设置的日期过后,用户仍然没有修改密码,则该用户还可以继续使用的天数;
- 账号失效日期,过了这个日期账号就不能用了;
- reserved
- 账号和密码都可以在/etc/passwd和/etc/shadow这两个文件中找到
- /home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。 - /lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。 - /lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。 - /media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。 - /mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。 - /opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。 - /proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:- echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
- /root:
该目录为系统管理员,也称作超级权限者的用户主目录。 - /sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。 - /selinux:
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。 - /srv:
该目录存放一些服务启动之后需要提取的数据。 - /sys:这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
- /tmp:
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。 - /usr:
usr 是 unix system resources(unix 系统资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。 - /usr/bin:
系统用户使用的应用程序。 - /usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。 - /usr/src:
内核源代码默认的放置目录。 - /var:
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 - /run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
文件基本属性
使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组
- ubuntu@VM-4-6-ubuntu:~$ ll
- total 188
- drwxr-x— 10 ubuntu ubuntu 4096 Apr 28 04:53 ./
- drwxr-xr-x 5 root root 4096 Apr 28 05:21 ../
- drwxrwxr-x 10 ubuntu ubuntu 4096 Feb 15 09:51 AstrBot/
- drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 1 23:56 AutoBangumi/
- -rw——- 1 ubuntu ubuntu 8881 May 2 16:04 .bash_history
- -rw-r–r– 1 ubuntu ubuntu 220 Jan 7 2022 .bash_logout
- -rw-r–r– 1 ubuntu ubuntu 3771 Jan 7 2022 .bashrc
- 0 第一个字符【文件类型】:
- 当为 d 则是目录
- 当为 – 则是文件;
- 若是 l 则表示为链接文档(link file);
- 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
- 1 2 3 接下来三个位置【属主权限】:
- 以三个为一组,且均为 rwx 的三个参数的组合。
- r 代表可读(read)
- w 代表可写(write)
- x 代表可执行(execute)。
- 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 – 而已
- 4 5 6 【属组权限】
- 同上
- 7 8 9 【其他用户权限】
- 同上
常用命令:
- chgrp:更改文件属组
- chgrp [-R] 属组名 文件名
- -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上 -R 的参数,那么该目录下的所有文件的属组都会更改。
- chgrp [-R] 属组名 文件名
- chown (change owner) : 修改所属用户与组。
- chown [–R] 所有者 文件名
- chown [-R] 所有者:属组名 文件名
- chmod (change mode) : 修改用户的权限。
- 基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限
- 数字改变权限:
- 各权限分数:
- r:4
- w:2
- x:1
- 各权限分数:
- 每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的
- 例如当权限为: -rwxrwx— 分数则是:
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others= — = 0+0+0 = 0
- chmod [-R] xyz 文件或目录
- xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
- -R : 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更
- 以上例子中设置文件权限的命令就为chmod [-R] 770
- 例如当权限为: -rwxrwx— 分数则是:
- 符号改变权限:
- 可以使用 u, g, o 来代表三种身份的权限。
- 此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x
- eg. 如果我们需要将文件权限设置为 -rwxr-xr– ,可以使用 chmod u=rwx,g=rx,o=r 文件名
二、文件与目录管理
路径概念
- 绝对路径:
路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。 - 相对路径:
路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法。
- 路径查询命令:
- which
- which只能用来查找PATH环境变量中出现的路径下的可执行文件。
- whereis
- whereis [选项] [文件名称]
- ‘-b’ : 只找binary 文件
- ‘-m’ : 只找在说明文件manual路径下的文件
- ‘-s’ : 只找source来源文件
- ‘-u’ : 没有说明档的文件
- whereis [选项] [文件名称]
- which
文件后缀
- 在linux系统中,文件的后缀名并没有具体意义,也就是说,你加或者不加,都无所谓
- 加上仅仅是为了让人类容易区分,例如:
- .sh代表它是一个shell script
- .tar.gz 代表它是一个压缩包
- .cnf 代表它是一个配置文件
- test.zip 代表它是一个压缩文件
文件压缩
- 压缩文件常用扩展名
- *.Z compress 程序压缩的文件;
- *.gz gzip 程序压缩的文件;
- *.bz2 bzip2 程序压缩的文件;
- *.tar tar 程序打包的数据,并没有压缩过;
- *.tar.gz tar 程序打包的文件,其中并且经过 gzip 的压缩;
- *.tar.bz2 tar 程序打包的文件,其中并且经过 bzip2 的压缩。
- gzip :
- gzip [options] [file…]
file...
- 要压缩的文件。
gzip
会将指定的文件压缩,并生成一个.gz
后缀的压缩文件,同时删除原始文件。
- 要压缩的文件。
- options 参数选项:
-d
:解压缩.gz
文件。相当于使用gunzip
命令。-k
:保留原始文件,不删除。-r
:递归压缩目录下的所有文件。-v
:显示详细的压缩或解压缩过程。-l
:显示压缩文件的详细信息,如压缩率、原始大小等。-1
到-9
:指定压缩比。-1
是最快的压缩,压缩率最低;-9
是最慢的压缩,压缩率最高。默认是-6
。-t
:测试压缩文件的完整性。
- zcat 档名.gz
- 查看压缩文件
- bzip2,bzcat类似
- gzip [options] [file…]
- zip/unzip:
- zip [options] output.zip file1 file2 … 【用以压缩】
output.zip
:生成的压缩文件名。file1 file2 ...
:要压缩的文件或目录。- options 参数:
-r
:递归压缩目录及其子目录中的所有文件。-e
:为压缩文件设置密码保护。-q
:静默模式,不显示压缩过程。-v
:显示详细的压缩过程。-x
:排除某些文件或目录,不进行压缩。-m
:压缩后删除原始文件。-0
到-9
:指定压缩级别,-0
表示存储不压缩,-9
表示最高压缩率,默认是-6
。
- unzip [options] file.zip 【用以解压】
- options 参数:
-d <directory>
:将解压缩的文件放入指定的目录。-l
:列出.zip
文件中的内容,但不解压。-v
:显示详细信息,包括.zip
文件的结构和压缩率等信息。-t
:测试.zip
文件的完整性,但不解压。-n
:解压时不覆盖已存在的文件。-o
:解压时覆盖已存在的文件,而不提示。-x <pattern>
:解压时排除指定的文件或目录。-j
:解压时不保留目录结构,将所有文件解压到当前目录中。
- options 参数:
- zip [options] output.zip file1 file2 … 【用以压缩】
- tar:
- tar [options] -f archive.tar [files…]
-f archive.tar
:指定归档文件的名称。[files...]
:要打包的文件和目录。- options 参数
- 基本操作选项
-c
:创建一个新的归档文件。-x
:解压归档文件。-t
:列出归档文件的内容。-r
:向现有归档文件中追加文件。-u
:仅追加比归档文件中已有文件更新的文件。-d
:找到归档文件中与文件系统不同步的差异。-A
:将一个.tar
文件追加到另一个.tar
文件中。
- 文件选择和排除
-f <file>
:指定归档文件的名称(必须放在选项列表的最后)。-C <directory>
:切换到指定目录进行操作。--exclude=<pattern>
:排除匹配指定模式的文件。--exclude-from=<file>
:从指定文件读取要排除的模式。--exclude-caches
:排除目录中的缓存文件。--exclude-backups
:排除以~
结尾的备份文件。--exclude-vcs
:排除版本控制系统生成的文件(如.git
、.svn
等)。
- 压缩和解压选项
-z
:使用gzip
压缩归档文件。-j
:使用bzip2
压缩归档文件。-J
:使用xz
压缩归档文件。--lzip
:使用lzip
压缩归档文件。--lzma
:使用lzma
压缩归档文件。--lzop
:使用lzop
压缩归档文件。--zstd
:使用zstd
压缩归档文件。-a
:自动选择压缩方式(基于归档文件的扩展名,如.tar.gz
、.tar.bz2
等)。-I <command>
:使用指定的压缩程序进行压缩或解压。
- 输出和交互选项
-v
:显示详细操作过程(verbose)。--progress
:显示进度条(与-v
一起使用时)。-w
或--interactive
:在每次操作前询问用户确认。--checkpoint
:在处理每个文件后显示一个检查点。--checkpoint-action=<action>
:在检查点执行指定的动作,如echo
、dot
等。--totals
:在操作结束后显示处理的总字节数。--verbose
:详细显示处理的信息。--quiet
:尽可能少的输出信息。
- 文件和权限相关选项
-p
:保留文件的原始权限(解压时)。--same-owner
:尝试将解压的文件设为原始所有者(需超级用户权限)。--no-same-owner
:不设置文件所有者。--same-permissions
:保留文件的原始权限(与-p
相同)。--no-same-permissions
:不保留原始权限,使用当前用户的 umask 设置权限。-m
:在解压时不恢复文件的修改时间,而使用当前时间。
- 归档管理选项
-k
或--keep-old-files
:解压时保留已有文件,不覆盖。--overwrite
:解压时强制覆盖已有文件。--remove-files
:归档成功后删除原始文件。--delete
:从归档文件中删除指定文件(仅限gnu tar
)。--keep-newer-files
:解压时保留比归档中较新的文件。--listed-incremental=<file>
:创建增量备份或从增量备份恢复。
- 文件系统和设备选项
-L <N>
:分割大于N
字节的归档文件(对于磁带机)。--tape-length=<number>
:指定磁带长度(对于磁带机)。--multi-volume
:创建或恢复多卷归档文件。-M
:与--multi-volume
一起使用,处理多卷归档文件。--use-compress-program=<prog>
:使用指定的压缩程序。
- 其他实用选项
--transform=<expression>
:重命名归档中的文件。--strip-components=<number>
:解压时剥离指定数量的路径组件。--ignore-failed-read
:忽略读取错误并继续操作。--occurrence=<number>
:在归档中选择第number
个出现的文件。-S
:处理稀疏文件(仅归档实际使用的块)。--no-recursion
:不递归进入目录。-h
或--dereference
:归档符号链接指向的文件而非链接本身。
- 帮助和版本信息
--help
:显示帮助信息。--version
:显示tar
的版本信息。
- 基本操作选项
处理目录常用命令
- ls(英文全拼:list files): 列出目录及文件名
- -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
- -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
- -l :长数据串列出,包含文件的属性与权限等等数据;(常用)
- cd(英文全拼:change directory):切换目录
- cd [相对路径或绝对路径]
- pwd(英文全拼:print work directory):显示目前的目录
- -P :显示出确实的路径,而非使用链接 (link) 路径。
- mkdir(英文全拼:make directory):创建一个新的目录
- -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
- -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
- mkdir -p test1/test2/test3/test4
- rmdir(英文全拼:remove directory):删除一个空的目录
- -p :从该目录起,一次删除多级空目录
- cp(英文全拼:copy file): 复制文件或目录
- -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
- -d:若来源档为链接档的属性(link file),则复制链接档属性而非文件本身;
- -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
- -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
- -l:进行硬式链接(hard link)的链接档创建,而非复制文件本身;
- -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
- -r:递归持续复制,用於目录的复制行为;(常用)
- -s:复制成为符号链接档 (symbolic link),亦即『捷径』文件;
- -u:若 destination 比 source 旧才升级 destination !
- rm(英文全拼:remove): 删除文件或目录
- rm [-fir] 文件或目录
- -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
- -i :互动模式,在删除前会询问使用者是否动作
- -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
- mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
- -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
文件内容查看
- cat 由第一行开始显示文件内容
- cat [-AbEnTv]
- -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
- -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
- -E :将结尾的断行字节 $ 显示出来;
- -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
- -T :将 [tab] 按键以 ^I 显示出来;
- -v :列出一些看不出来的特殊字符
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
- nl 显示的时候,顺道输出行号!
- nl [-bnw] 文件
- -b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值); - -n :列出行号表示的方法,主要有三种:
-n ln :行号在荧幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ; - -w :行号栏位的占用的位数。
- more 一页一页的显示文件内容
- 运行过程中,以下按键:
- 空白键 (space):代表向下翻一页;
- Enter :代表向下翻『一行』;
- /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
- :f :立刻显示出档名以及目前显示的行数;
- q :代表立刻离开 more ,不再显示该文件内容。
- b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
- 运行过程中,以下按键:
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
- 按键:
- 空白键 :向下翻动一页;
- [pagedown]:向下翻动一页;
- [pageup] :向上翻动一页;
- /字串 :向下搜寻『字串』的功能;
- ?字串 :向上搜寻『字串』的功能;
- n :重复前一个搜寻 (与 / 或 ? 有关!)
- N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
- q :离开 less 这个程序;
- 按键:
- head 只看头几行
- -n :后面接数字,代表显示几行的意思
- tail 只看尾巴几行
- -n :后面接数字,代表显示几行的意思
- -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
三、 用户与用户组管理
useradd 选项 用户名
- 选项:
- -c comment 指定一段注释性描述。
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- -g 用户组 指定用户所属的用户组。
- -G 用户组,用户组 指定用户所属的附加组。
- -s Shell文件 指定用户的登录Shell。
- -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
- 用户名:指定新账号的登录名。
userdel 选项 用户名
- 常用的选项是 -r,它的作用是把用户的主目录一起删除。
usermod 选项 用户名
- 常用选项与useradd类似
- -l 新用户名
- 这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
passwd 选项 用户名
- -l 锁定口令,即禁用账号。
- -u 口令解锁。
- -d 使账号无口令。
- -f 强迫用户下次登录时修改口令。
groupadd 选项 用户名
- -g GID 指定新用户组的组标识号(GID)。
- -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
groupdel 选项 用户名
- -g GID 为用户组指定新的组标识号。
- -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
- -n新用户组 将用户组的名字改为新名字
groupmod 选项 用户名
newgrp 切换到其他用户组
三、 磁盘管理
- df(英文全称:disk free):列出文件系统的整体磁盘使用量
- df [-ahikHTm] [目录或文件名]
-h
:以人类可读的方式显示输出结果(例如,使用 KB、MB、GB 等单位)。-T
:显示文件系统的类型。-t <文件系统类型>
:只显示指定类型的文件系统。-i
:显示 inode 使用情况。-H
:该参数是-h
的变体,但是使用 1000 字节作为基本单位而不是 1024 字节。这意味着它会以 SI(国际单位制)单位(例如 MB、GB)而不是二进制单位(例如 MiB、GiB)来显示磁盘使用情况。-k
:这个选项会以 KB 作为单位显示磁盘空间使用情况。-a
:该参数将显示所有的文件系统,包括虚拟文件系统,例如proc
、sysfs
等。如果没有使用该选项,默认情况下,df
命令不会显示虚拟文件系统。
- df [-ahikHTm] [目录或文件名]
- du(英文全称:disk used):检查磁盘空间使用量
- du [-ahskm] 文件或目录名称
- -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
- -h :以人们较易读的容量格式 (G/M) 显示;
- -s :仅显示指定目录或文件的总大小,而不显示其子目录的大小。
- -S :包括子目录下的总计,与 -s 有点差别。
- -k :以 KBytes 列出容量显示;
- -m :以 MBytes 列出容量显示;
- du [-ahskm] 文件或目录名称
- fdisk:用于磁盘分区
- fdisk [-l] 装置名称
- -l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
- fdisk [-l] 装置名称
- mkfs:磁盘格式化
- mkfs [-t 文件系统格式] 装置文件名
- -t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)
- mkfs [-t 文件系统格式] 装置文件名
- fsck:磁盘检查,若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。
- fsck [-t 文件系统] [-ACay] 装置名称
- -t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数
- -s : 依序一个一个地执行 fsck 的指令来检查
- -A : 对/etc/fstab 中所有列出来的 分区(partition)做检查
- -C : 显示完整的检查进度
- -d : 打印出 e2fsck 的 debug 结果
- -p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行
- -R : 同时有 -A 条件时,省略 / 不检查
- -V : 详细显示模式
- -a : 如果检查有错则自动修复
- -r : 如果检查有错则由使用者回答是否修复
- -y : 选项指定检测每个文件是自动输入yes,在不确定那些是不正常的时候,可以执行 # fsck -y 全部检查修复。
- fsck [-t 文件系统] [-ACay] 装置名称
- mount/umount:磁盘挂载与卸除
- mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点
- umount [-fn] 装置文件名或挂载点
- -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
- -n :不升级 /etc/mtab 情况下卸除。
四、vi/vim
三个模式
- 命令模式(Command Mode)
- 输入模式(Insert Mode)
- 命令行模式(Command-Line Mode)
命令模式
用户刚刚启动 vi/vim,便进入了命令模式。
- i — 切换到输入模式,在光标当前位置开始输入文本。
- x — 删除当前光标所在处的字符。
- : — 切换到底线命令模式,以在最底一行输入命令。
- a — 进入插入模式,在光标下一个位置开始输入文本。
- o:在当前行的下方插入一个新行,并进入插入模式。
- O — 在当前行的上方插入一个新行,并进入插入模式。
- dd — 剪切当前行。
- yy — 复制当前行。
- p(小写) — 粘贴剪贴板内容到光标下方。
- P(大写)– 粘贴剪贴板内容到光标上方。
- u — 撤销上一次操作。
- Ctrl + r — 重做上一次撤销的操作。
- :w — 保存文件。
- :q — 退出 Vim 编辑器。
- :q! — 强制退出Vim 编辑器,不保存修改。
若想要编辑文本,只需要启动 Vim,进入了命令模式,按下 i 切换到输入模式即可。
命令模式只有一些最基本的命令,因此仍要依靠底线命令行模式输入更多命令。
输入模式
在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式。
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下 :(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
:w
保存文件。:q
退出 Vim 编辑器。:wq
保存文件并退出 Vim 编辑器。:q!
强制退出Vim编辑器,不保存修改。
按 ESC 键可随时退出底线命令模式。
五、Linux终端快捷键
- 命令行快捷键:
- 常用:
- Ctrl L :清屏
- Ctrl M :等效于回车
- Ctrl C : 中断正在当前正在执行的程序
- 历史命令:
- Ctrl P : 上一条命令,可以一直按表示一直往前翻
- Ctrl N : 下一条命令
- Ctrl R,再按历史命令中出现过的字符串:按字符串寻找历史命令(重度推荐)
- 命令行编辑:
- Tab : 自动补齐(重度推荐)
- Ctrl A : 移动光标到命令行首
- Ctrl E : 移动光标到命令行尾
- Ctrl B : 光标后退
- Ctrl F : 光标前进
- Alt F : 光标前进一个单词
- Alt B : 光标后退一格单词
- Ctrl ] : 从当前光标往后搜索字符串,用于快速移动到该字符串
- Ctrl Alt ] : 从当前光标往前搜索字符串,用于快速移动到该字符串
- Ctrl H : 删除光标的前一个字符
- Ctrl D : 删除当前光标所在字符
- Ctrl K :删除光标之后所有字符
- Ctrl U : 删除光标之前所有字符
- Ctrl W : 删除光标前的单词(Word, 不包含空格的字符串)
- Ctrl \ : 删除光标前的所有空白字符
- Ctrl Y : 粘贴Ctrl W或Ctrl K删除的内容
- Alt . : 粘贴上一条命令的最后一个参数(很有用)
- Alt [0-9] Alt . 粘贴上一条命令的第[0-9]个参数
- Alt [0-9] Alt . Alt. 粘贴上上一条命令的第[0-9]个参数
- Ctrl X Ctrl E : 调出系统默认编辑器编辑当前输入的命令,退出编辑器时,命令执行
- 其他:
- Ctrl Z : 把当前进程放到后台(之后可用”fg”命令回到前台)
- Shift Insert : 粘贴(相当于Windows的Ctrl V)
- Ctrl + Shift + c:复制
- Ctrl + Shift + v:粘贴
- 在命令行窗口选中即复制
- 在命令行窗口中右键即粘贴,可用Shift Insert代替
- Ctrl PageUp : 屏幕输出向上翻页
- Ctrl PageDown : 屏幕输出向下翻页
- Ctrl + Alt + F1 ~ F6:切换终端界面。
- Ctrl + Alt + F7 :切换回图形界面。
- F11:全屏界面切换
- 常用:
六、 apt命令
apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。
- *yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
apt 命令执行需要超级管理员权限(root)。
常用命令
- 列出所有可更新的软件清单命令:sudo apt update
- 升级软件包:sudo apt upgrade列出可更新的软件包及版本信息:apt list –upgradable升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade
- 安装指定的软件命令:sudo apt install <package_name>安装多个软件包:sudo apt install <package_1> <package_2> <package_3>
- 更新指定的软件命令:sudo apt update <package_name>
- 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>
- 删除软件包命令:sudo apt remove <package_name>
- 清理不再使用的依赖和库文件: sudo apt autoremove
- 移除软件包及配置文件: sudo apt purge <package_name>
- 查找软件包命令: sudo apt search <keyword>
- 列出所有已安装的包:apt list –installed
- 列出所有已安装的包的版本信息:apt list –all-versions
七、信息查询
进程查询
- top:
- top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
-d <秒数>
:指定 top 命令的刷新时间间隔,单位为秒。-n <次数>
:指定 top 命令运行的次数后自动退出。-p <进程ID>
:仅显示指定进程ID的信息。-u <用户名>
:仅显示指定用户名的进程信息。-H
:在进程信息中显示线程详细信息。-i
:不显示闲置(idle)或无用的进程。-b
:以批处理(batch)模式运行,直接将结果输出到文件。-c
:显示完整的命令行而不截断。-S
:累计显示进程的 CPU 使用时间。
- 显示信息
- 总体系统信息:
- uptime:系统的运行时间和平均负载。
- tasks:当前运行的进程和线程数目。
- CPU:总体 CPU 使用率和各个核心的使用情况。
- 内存(Memory):总体内存使用情况、可用内存和缓存。
- 进程信息:
- PID:进程的标识符。
- USER:运行进程的用户名。
- PR(优先级):进程的优先级。
- NI(Nice值):进程的优先级调整值。
- VIRT(虚拟内存):进程使用的虚拟内存大小。
- RES(常驻内存):进程实际使用的物理内存大小。
- SHR(共享内存):进程共享的内存大小。
- %CPU:进程占用 CPU 的使用率。
- %MEM:进程占用内存的使用率。
- TIME+:进程的累计 CPU 时间。
- 功能和交互操作:
- 按键命令:在 top 运行时可以使用一些按键命令进行操作,如按下 “k” 可以终止一个进程,按下 “h” 可以显示帮助信息等。
- 排序:可以按照 CPU 使用率、内存使用率、进程 ID 等对进程进行排序。
- 刷新频率:可以设置 top 的刷新频率,以便动态查看系统信息。
- 总体系统信息:
- top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
- free:显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等
- free [-bkmotV][-s <间隔秒数>]
- -b 以Byte为单位显示内存使用情况。
- -k 以KB为单位显示内存使用情况。
- -m 以MB为单位显示内存使用情况。
- -h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。
- -o 不显示缓冲区调节列。
- -s<间隔秒数> 持续观察内存使用状况。
- -t 显示内存总和列。
- -V 显示版本信息。
- free [-bkmotV][-s <间隔秒数>]
- w:显示目前登入系统的用户信息
- w [-fhlsuV][用户名称]
- -f 开启或关闭显示用户从何处登入系统。
- -h 不显示各栏位的标题信息列。
- -l 使用详细格式列表,此为预设值。
- -s 使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。
- -u 忽略执行程序的名称,以及该程序耗费CPU时间的信息。
- -V 显示版本信息。
- su [-fmp] [-c command] [-s shell] [–help] [–version] [-] [USER [ARG]]:用以切换用户
- -f 或 –fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
- -m -p 或 –preserve-environment 执行 su 时不改变环境变数
- -c command 或 –command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
- -s shell 或 –shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
- –help 显示说明文件
- –version 显示版本资讯
- – -l 或 –login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
- USER 欲变更的使用者帐号
- ARG 传入新的 shell 参数
- w [-fhlsuV][用户名称]
网络、ip查询与网络接口配置
- ifconfig:
- ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<硬件地址>][io_addr][irq][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]
- add<地址> 设置网络设备IPv6的IP地址。
- del<地址> 删除网络设备IPv6的IP地址。
- down 关闭指定的网络设备。
- <hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。
- io_addr<I/O地址> 设置网络设备的I/O地址。
- irq<IRQ地址> 设置网络设备的IRQ。
- media<网络媒介类型> 设置网络设备的媒介类型。
- mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
- metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。
- mtu<字节> 设置网络设备的MTU。
- netmask<子网掩码> 设置网络设备的子网掩码。
- tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。
- up 启动指定的网络设备。
- -broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。
- -pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。
- -promisc 关闭或启动指定网络设备的promiscuous模式。
- [IP地址] 指定网络设备的IP地址。
- [网络设备] 指定网络设备的名称。