一、常用操作以及概念

快捷键

  • Tab:命令和文件名补全;
  • Ctrl+C:中断正在运行的程序;
  • Ctrl+D:结束键盘输入

求助

1. help

指令的基本用法与选项介绍

2. man

man是manual的缩写,将指令的具体信息显示出来,当执行man date时,有DATE(1)出现,其中的数字代表指令的类型,常用的数字及其类型如下:
在这里插入图片描述

3. info

info与man类似,但info将文档分成一个个页面,每个页面可以进行跳转。

4. doc

/usr/share/doc存放着软件的一整套说明文件。

关机

1. who

在关机前需要先使用who命令查看有没有其他用户在线。

2. sync

为了加快对磁盘文件的读写速度,位于内存中的文件数据不会立即同步到磁盘,因此关机之前需要先进行sync同步操作。

3. shutdown

  • -k:不会关机,只是发送警告信息,通知所有在线的用户;
  • -r:将系统的服务停掉后就重新启动;
  • -h:将系统的服务停掉后就立即关机;
  • -c:取消已经在进行的shutdown指令内容。

PATH

可以在环境变量 PATH 中声明可执行文件的路径,路径之间用: 分隔。

sudo

sudo 允许一般用户使用 root 可执行的命令,不过只有在/etc/sudoers配置文件中添加的用户才能使用该指令。

Vim三个模式

  • 一般指令模式(Command mode):VIM 的默认模式,可以用于移动游标查看内容;
  • 编辑模式(Insert mode):按下i等按键之后进入,可以对文本进行编辑;
  • 指令列模式(Bottom-line mode):按下:按键之后进入,用于保存退出等操作。

在指令列模式下,有以下命令用于离开或者保存文件。
在这里插入图片描述

二、文件

文件属性

用户分为三种:文件拥有者、群组以及其他用户,对不同的用户有不同的文件权限。
使用IS查看一个文件时,会显示一个文件的信息,例如:drwxr-xr-x 3 root root 17 May 6 00:14 .config ,对这个信息的解释如下:

  • drwxr-xr-x:文件类型以及权限,第 1 位为文件类型字段,后 9 位为文件权限字段
  • 3:链接数
  • root:文件拥有者
  • root:所属群组
  • 17:文件大小
  • May 6 00:14:文件后被修改的时间
  • .config:文件名

常见的文件类型及其含义有:

  • d:目录
  • -:文件
  • l:链接文件

9 位的文件权限字段中,每 3 个为一组,共 3 组,每一组分别代表对文件拥有者、所属群组以及其它用户的文件权限。 一组权限中的 3 位分别为 r、w、x 权限,表示可读、可写、可执行。
文件时间有以下三种:

  • modification time (mtime):文件的内容更新就会更新;
  • status time (ctime):文件的状态(权限、属性)更新就会更新;
  • access time (atime):读取文件时就会更新。

文件与目录的基本操作

1. Is:列出文件或目录的信息,目录的信息就是其中包含的文件。

  • -a:列出全部的文件
  • -d:仅列出目录本身
  • -l:以长数据串列出,包含文件的属性与权限等数据

2. cd:更换当前目录

3. mkdir:创建目录

  • -m:配置目录权限
  • -p:递归创建目录

4. rmdir:删除目录,目录必须为空

  • -p:递归删除目录

5. touch:更新文件时间或建立新文件

  • -a : 更新 atime
  • -c : 更新 ctime,若该文件不存在则不建立新文件
  • -m : 更新 mtime
  • -d : 后面可以接更新日期而不使用当前日期,也可以使用 –date=”日期或时间”
  • -t : 后面可以接更新时间而不使用当前时间,格式为[YYYYMMDDhhmm]

6. cp:复制文件

如果源文件有两个以上,则目的文件一定要是目录才行

  • -a :相当于 -dr –preserve=all 的意思,至于 dr 请参考下列说明
  • -d :若来源文件为链接文件,则复制链接文件属性而非文件本身
  • -i :若目标文件已经存在时,在覆盖前会先询问
  • -p :连同文件的属性一起复制过去
  • -r :递归持续复制
  • -u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制
  • –preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了

7. rm :删除文件。

  • -r :递归删除

    8. mv :移动文件。

  • # mv [-fiu] source destination
  • # mv [options] source1 source2 source3 …. directory
  • -f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖

9.两台Linux服务器相互拷贝文件

scp[参数][原路径][目标路径]

scp是secure copy的缩写,scp是linux系统下基于ssh登录进行安全的远程文件拷贝命令。

参数有:

  • -1:强制scp命令使用协议ssh1
  • -2:强制scp命令使用协议ssh2
  • -4:强制scp命令只使用ipv4寻址
  • -6:强制scp命令只使用ipv6寻址
  • -B 使用批处理模式(传输过程中不询问传输口令或短语)
  • -C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
  • -p 保留原文件的修改时间,访问时间和访问权限。
  • -q 不显示传输进度条。
  • -r 递归复制整个目录。
  • -v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。

修改权限

可以将一组权限用数字来表示,此时一组权限的3个位当做二进制数字的位,从左到右每个位的权值为4、2、1,即每个权限对应的数字权值为r:4,w:2,x:1。
示例:将 .bashrc 文件的权限修改为 -rwx-xr-r-。

chmod 754 .bashrc

也可以使用符号来设定权限。

  • u:拥有者
  • g:所属群组
  • o:其他人
  • a:所有人
  • +:添加权限
  • -:移除权限
  • =:设定权限

示例:为 .bashrc 文件的所有用户添加写权限。

chmod a+w .bashrc

文件默认权限

文件默认是没有可执行权限,因此为666,目录必须要能够进入,也就是必须拥有可执行权限,因此为777。

获取文件内容

  • cat:取得文件内容
  • tac:是cat的反向操作,从后一行开始打印
  • more:它可以一页一页查看文件内容,比较适合大文件的查看
  • less:和more类似,但是多了一个向前翻页的功能
  • head:取得文件前几页
  • tail:是head的反向操作,只是取得的是后几行
  • od:以字符或者十六进制的形式显示二进制文件

六、压缩与打包

压缩文件名

Linux 底下有很多压缩文件名,常见的如下:
在这里插入图片描述

压缩指令

1. gzip

gzip 是 Linux 使用广的压缩指令,可以解开 compress、zip 与 gzip 所压缩的文件。
经过 gzip 压缩过,源文件就不存在了。 有 9 个不同的压缩等级可以使用。 可以使用 zcat、zmore、zless 来读取压缩文件的内容。

  • $ gzip [-cdtv#] filename
  • -c :将压缩的数据输出到屏幕上
  • -d :解压缩 -t :检验压缩文件是否出错
  • -v :显示压缩比等信息
  • -# : # 为数字的意思,代表压缩等级,数字越大压缩比越高,默认为 6

    2. bzip2

    提供比 gzip 更高的压缩比。 查看命令:bzcat、bzmore、bzless、bzgrep。
  • $ bzip2 [-cdkzv#] filename
  • -k :保留源文件

3. xz

提供比 bzip2 更佳的压缩比。
可以看到,gzip、bzip2、xz 的压缩比不断优化。不过要注意的是,压缩比越高,压缩的时间也越长。 查看命令:xzcat、xzmore、xzless、xzgrep。

$ xz [-dtlkc#] filename

打包

压缩指令只能对一个文件进行压缩,而打包能够将多个文件打包成一个大文件。tar 不仅可以用于打包,也可以使用 gzip、bzip2、xz 将打包文件进行压缩。

  • $ tar [-z|-j|-J] [cv] [-f 新建的 tar 文件] filename… ==打包压缩
  • $ tar [-z|-j|-J] [tv] [-f 已有的 tar 文件] ==查看
  • $ tar [-z|-j|-J] [xv] [-f 已有的 tar 文件] [-C 目录] ==解压缩
  • -z :使用 zip;
  • -j :使用 bzip2;
  • -J :使用 xz;
  • -c :新建打包文件;
  • -t :查看打包文件里面有哪些文件;
  • -x :解打包或解压缩的功能;
  • -v :在压缩/解压缩的过程中,显示正在处理的文件名;
  • -f : filename:要处理的文件;
  • -C 目录 : 在特定目录解压缩。
    在这里插入图片描述

    七、正则表达式

    grep

    grep(globally search a regular expression and print),使用正则表示式进行全局查找并打印。
    • $ grep [-acinv] [–color=auto] 搜寻字符串 filename
    • -c : 统计个数
    • -i : 忽略大小写
    • -n : 输出行号
    • -v : 反向选择,也就是显示出没有 搜寻字符串 内容的那一行
    • –color=auto :找到的关键字加颜色显示

示例:把含有 the 字符串的行提取出来(注意默认会有 –color=auto 选项,因此以下内容在 Linux 中有颜色显示 the 字符串)

$ grep -n 'the' regular_express.txt 
8:I can't finish the test. 
12:the symbol '*' is represented as start. 
15:You are the best is mean you are the no. 1. 
16:The world Happy is the same with "glad". 
18:google is the best tools for search keyword

因为{}在 shell 是有特殊意义的,因此必须要使用转义字符进行转义。

$ grep -n 'go\{2,5\}g' regular_express.txt

printf

用于格式化输出。它不属于管道命令,在给 printf 传数据时需要使用$( ) 形式。

$ printf '%10s %5i %5i %5i %8.2f \n' $(cat printf.txt)     
DmTsai    80    60    92    77.33     
VBird    75    55    80    70.00        
Ken    60    90    70    73.33

awk

是由 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 创造,awk 这个名字就是这三个创始人名字的首字母。 awk 每次处理一行,处理的小单位是字段,每个字段的命名方式为:$n,n 为字段号,从 1 开始,$0 表示一整行。
示例:取出近五个登录用户的用户名和 IP

$ last -n 5 
dmtsai pts/0 192.168.1.100 Tue Jul 14 17:32 still logged in 
dmtsai pts/0 192.168.1.100 Thu Jul 9 23:36 - 02:58 (03:22) 
dmtsai pts/0 192.168.1.100 Thu Jul 9 17:23 - 23:36 (06:12) 
dmtsai pts/0 192.168.1.100 Thu Jul 9 08:02 - 08:17 (00:14) 
dmtsai tty1 Fri May 29 11:55 - 12:11 (00:15)
$ last -n 5 | awk '{print $1 "\t" $3}'

可以根据字段的某些条件进行匹配,例如匹配字段小于某个值的那一行数据。
$ awk ‘条件类型 1 {动作 1} 条件类型 2 {动作 2} …’ filename
示例:/etc/passwd 文件第三个字段为 UID,对 UID 小于 10 的数据进行处理。

$ cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t " $3}' root 0 bin 1 daemon 2

awk 变量:在这里插入图片描述
示例:显示正在处理的行号以及每一行有多少字段

$ last -n 5 | awk '{print $1 "\t lines: " NR "\t columns: " NF}' 
dmtsai lines: 1 columns: 10 dmtsai lines: 2 columns: 10 
dmtsai lines: 3 columns: 10 dmtsai lines: 4 columns: 10 
dmtsai lines: 5 columns: 9

八、进程管理

查看进程

1. ps

查看某个时间点的进程信息
示例一:查看自己的进程

# ps -l

示例二:查看系统所有进程

# ps aux

示例三:查看特定的进程

# ps aux | grep threadx

2. pstree

查看进程树
示例:查看所有进程树

# pstree -A

3. top

实时显示进程信息
示例:两秒钟刷新一次

# top -d 2

4. netstat

查看占用端口的进程
示例:查看特定端口的进程

# netstat -anp | grep port

进程状态 在这里插入图片描述

孤儿进程

一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。
孤儿进程将被 init 进程(进程号为 1)所收养,并由 init 进程对它们完成状态收集工作。
由于孤儿进程会被 init 进程收养,所以孤儿进程不会对系统造成危害。

僵尸进程

一个子进程的进程描述符在子进程退出时不会释放,只有当父进程通过 wait() 或 waitpid() 获取了子进程信息后才会 释放。如果子进程退出,而父进程并没有调用 wait() 或 waitpid(),那么子进程的进程描述符仍然保存在系统中,这 种进程称之为僵尸进程。
僵尸进程通过 ps 命令显示出来的状态为 Z(zombie)。
系统所能使用的进程号是有限的,如果产生大量僵尸进程,将因为没有可用的进程号而导致系统不能产生新的进程。
要消灭系统中大量的僵尸进程,只需要将其父进程杀死,此时僵尸进程就会变成孤儿进程,从而被 init 进程所收养, 这样 init 进程就会释放所有的僵尸进程所占有的资源,从而结束僵尸进程。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

Spring Security核心(一)-概述 Previous
MySQL优化 Next