Linux

Linux系统的组成

1.linux内核(kernel)

2.shell:用户与内核交互的接口

3.文件系统:EXT3 ,HPFS,EXT4等等,这里不一一解释了,文件系统最主要的就是磁盘存储,是必有的功能

Linux的文件结构是单树状结构(Windows的文件系统我们都熟悉,有CDEF磁盘,是并列的树形结构)

 

这里再说下Linux系统自带的分析工具 :top(类似于Windows的任务管理器)

 

  第二行任务信息(可以看出running状态的任务2个,sleeping状态的98个,暂停状态的为0,僵尸进程为0)

  第三行cpu占有率(0.0us:用户空间占有0%,0.3sy:内核占有0.3%,99.7 id:空闲空间为99.7%,wa:等待输入输出占用cpu百分比,hi:硬件中断,si:软件中断)

    这里温习下操作系统知识:hi(硬件中断)和si(软中断)的区别

    中断:在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。

    硬件中断:硬件中断是一个异步(CPU暂时搁置当前请求的响应,处理下一个请求)信号,系统相连的外接设备(比如打印机 硬盘 键盘等)自动产生的,

          每个设备都有自己的中断请求(IRQ:interrupt request)

    软中断的目的是程序想要将一些数据传递给硬件,由当前运行的进程产生,软中断不会直接中断CPU, 也只有当前正在运行的代码(或进程)才会产生软中断。

    第四行五行内存占用信息

 

进程树的使用:

 yum -y install psmisc

 

结束进程命令:

- $ kill [ -9 ] 进程PID

- $ killall [ -9 ] 进程名

虚拟目录结构:

常用的文件、目录操作命令

切换目录change directory:cd

命令查看用户的当前目录:pwd

.表示当前目录

.. 表示当前目录的上一级目录

-表示用 cd 命令切换目录前所在的目录

~ 表示用户主目录的绝对路径名

ls:显示文件或目录信息

mkdir:当前目录下创建一个空目录

rmdir(remove directory):命令删除空的目录

touch:生成一个空文件或更改文件的时间

cp:复制文件或目录

mv:移动文件或目录、文件或目录改名

rm:删除文件或目录

ln:建立链接文件

find:查找文件

file/stat:查看文件类型或文件属性信息

cat查看文本文件内容

more可以分页看

  • Enter 向下n行,需要定义。默认为1行
  • Ctrl+F 向下滚动一屏
  • 空格键 向下滚动一屏
  • Ctrl+B 返回上一屏
  • = 输出当前行的行号
  • :f 输出文件名和当前行的行号
  • V 调用vi编辑器
  • !命令 调用Shell,并执行命令
  • q 退出more

less: 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页

  • b 向上翻一页
  • d 向后翻半页
  • h 显示帮助界面
  • u 向前滚动半页
  • y 向前滚动一行
  • 空格键 滚动一页
  • 回车键 滚动一行
  • Q 退出less 命令

head -20:查看文件的头部20行

tail -20: 查看文件的尾部的20行

echo:把内容重定向到指定的文件中 ,有则打开,无该文件则自动创建

 

覆盖模式:>   例如 echo "xxx">xxx.txt 将xxx输入到xxx.txt

 

 

追加模式:>>  (追加内容到文件尾部)

 

stat 文件名:

 

 

stat是可以看到文件更改时间,存取时间的命令,这里再说下修改时间属性的命令:touch

 

 新建一个test文件进行测试

使用touch命令可将文件时间属性改为当前系统时间:

 

这里时间不会有变化

 touch还有一个用途就是使用指令时,如果指定的文件不存在,则将创建一个新的空白文件

 

 

Linux inode(一般是128字节或者256字节):

Linux系统会将文件权限和属性信息存在block和inode中,inode中包含很多文件元信息,其中不包括文件名,

对于系统来说,辨认文件通过inode码,而非文件名,尽管如此,和Windows系统一样,Linux在同目录下还

是不能同时存在两个文件名一样的文件,这也比较好理解,如果文件名一样,用户都不好辨认具体文件了。

系统查找文件的过程:

1.系统通过用户提供的文件名查找对应的inode码

2.通过inode码,查询用户是否有访问权限,如果有则获取inode的信息

3.通过inode的信息找到文件对应的block块,block

查看当前目录下文件的inode码(或者使用stat):

ls -i 或者 ls -li

inode总数已使用的百分比

df -i

 

 每个文件都必须有对应的inode码,当inode总数耗尽的时候,会引发故障

 

链接的概念(硬连接和软连接,使用ln命令创建):

链接简单地讲就类似于Windows操作系统的快捷方式,通常将目录层次较深的文件链接到比较容易访问的文件目录中

 

硬链接:硬链接(hard link,也称链接)就是一个文件的一个或多个文件名

如上图,创建了test.txt 的硬链接

hard和test.txt的inode是相同的,说明它们指向同一区块,如果我们修改其中的hard文件,那么test文件也会修改(如下图)

 

 

 

软链接:软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。

 

 软链接的inode值和源文件不一样

即指向的区块是另外一个,实际的内容还是源文件的内容

当删除源文件之后,软链接的内容将查询不到,而硬链接的内容还在,如下图

 

 在软链接上写入一些数据,test文件又回来了

 修改hostname:(centos7.6)需要reboot:

hostnamectl set-hostname 修改的名称

查询当前用户:

whoami

查询当前用户的组内成员:

groups

查看test用户所在的组和成员:

groups test

查看用户组:

cat /etc/group

查看所有用户:

cat /etc/passwd

创建新用户:

$ sudo adduser username

使用sudo获得root权限,只有root权限下可以创建用户

设置密码:

sudo passwd username

切换用户:

su username

sudo(super user do)是linux下常用的允许普通用户使用超级用户权限的工具,它的配置文件是sudoers,前面讲过,/etc目录下存放的是配置文件,即sudoer文件也在etc目录下

 

sudo的工作流程:

sudo首先会读取和解析 /etc/sudoers 文件,查找调用命令的用户及其权限。

提示使用sudo命令的用户输入密码(权限设置NOPASSWD的可以跳过密码验证)

sudo会创建一个子进程,调用 setuid() 来切换到目标用户。

whereis sudoers

通过以下命令可以修改sudoers文件(此命令会自查配置是否正确,当然也可以使用vim /etc/sudoers 但是更推荐直接使用visudo,如果配置不正确,会提示哪里出错):

visudo

当需要给用户提供超级用户权限时,和root一样配置即可

 

 

 

 

 

 

sudoers的重要内容

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL

## Allows members of the users group to mount and unmount the 
## cdrom as root
## 允许 users 用户组中的用户像 root 用户一样使用 mount、unmount、chrom 命令
#
%users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown
this system # %users localhost=/sbin/shutdown -h now

 

 

chown(change owner): 利用 chown命令 可以将文件的拥有者加以改变,需要root权限

例(将test.txt的所有者修改为root用户):

 

 

 

文件打包和解压操作

在Linux我们常用的解压文件的方法为以下三种(根据不同文件的后缀名选取合适的方式即可):

·gzip

·bzip2

·tar

 解压命令:

 · gzip -d filename.gz

·bzip2 -d filename.bz2

·tar -xzvf filename.tar.gz

 

重要的文本检索工具 grep(Globally search a Regular Expression and Print):能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行

例:

 

从文件内容查找与正则表达式匹配的行:

grep –e "正则表达式" 文件名

 

 

参数:
-a 或 --text : 不要忽略二进制的数据。 -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。 -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。 -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。 -c 或 --count : 计算符合样式的列数。 -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。 -d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。 -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。 -E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。 -f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。 -F 或 --fixed-regexp : 将样式视为固定字符串的列表。 -G 或 --basic-regexp : 将样式视为普通的表示法来使用。 -h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。 -H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。 -i 或 --ignore-case : 忽略字符大小写的差别。 -l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。 -L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。 -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。 -o 或 --only-matching : 只显示匹配PATTERN 部分。 -q 或 --quiet或--silent : 不显示任何信息。 -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。 -s 或 --no-messages : 不显示错误信息。 -v 或 --invert-match : 显示不包含匹配文本的所有行。 -V 或 --version : 显示版本信息。 -w 或 --word-regexp : 只显示全字符合的列。 -x --line-regexp : 只显示全列符合的列。 -y : 此参数的效果和指定"-i"参数相同。

 

apt(Advanced Packaging Tool):

apt 命令可以安装、升级、删除软件包

sudo apt update

 

升级软件包:

sudo apt upgrade

 

 可更新的软件信息:

apt list --upgradeable

安装指定的软件:

sudo apt install packagename

更新指定的软件:

sudo apt update packagename

删除指定的软件包:

sudo apt remove packagename

显示指定软件包的信息:

sudo apt show packagename

自动清理不使用的软件包

sudo apt autoremove

查找软件包:

sudo apt search <keyword>

列出已安装的包:

apt list --installed

 

快捷键

上下键:回到上个命令

Tab:自动补全

Ctrl + A:跳转到行首

Ctrl + E:跳转到行尾

Ctrl + U:清空当前行的命令(这在输入错误的命令时能够很快速的删除当前行)

Ctrl + K:从当前光标删除到行尾

Ctrl + W:删除当前光标所在的一个单词

Ctrl + Y:粘贴使用 Ctrl+W,Ctrl+U 和 Ctrl+K 快捷键删除的文本

Ctrl + C:终止正在运行的程序

Ctrl + D:退出当前终端

Ctrl + L:清空终端

Ctrl + Z:挂起命令,将正在运行的程序送到后台

Ctrl + P :显示当前命令的上一条历史命令

Ctrl + N :显示当前命令的下一条历史命令

posted @ 2021-07-12 22:32  lbeaner  阅读(73)  评论(0)    收藏  举报