首页 > 系统相关 >Linux01

Linux01

时间:2023-11-27 16:45:06浏览次数:34  
标签:文件 Linux01 用户 命令 suli 权限 root

第一章:

  云计算是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来虚拟化资源,将计算机资源通过网络进行虚拟化,或者用虚拟化资源进行计算。

  云计算是一种按使用量付费的模式,它随时随地提供便捷的、可通过网络按需访问的可配置计算资源共享池(资源包括网络、服务器、存储、应用软件、服务),这些资源能够快速调配,极度缩减管理资源的工作量和与服务供应商的交互。

  windows系统主打家庭办公,操作方便,多用于日常办公、娱乐,但它是收费系统,不是开源软件,漏洞多,并且不太稳定,长时间开机可能会出现明显的卡顿情况。

  Linux系统是一套免费使用和自由传播的类UNIX操作系统,用于同时处理多进程和多用户同时在线,通过用户权限来指定不同的用户对文件的使用权限,Linux系统中的一切都归结为文件,完全兼容POSIX 1.0标准。它主打网络服务,专业性强,为免费开源系统,主要用于搭建服务器,性能稳定,长时间开机不会出现卡顿情况,有漏洞少和更安全的优势,但由于是专业系统对业余人员不是很友好所以导致代码操作难度高的问题。(多用户、多任务、多线程、多CPU)

  快照:保存现有系统的一个状态,如果正在使用的系统损坏或不能正常运行就可以直接回到保存的状态。

  克隆:复制原始虚拟机的全部状态,克隆操作一旦完成,克隆的虚拟机就可以脱离原始虚拟机独立存在,而且在克隆的虚拟机中和原始虚拟机中的操作是相对独立的,不互相影响。

 

第二章

  根目录下有一些需要我们牢牢记住的目录:/表示根目录,只包含目录,不包含具体文件;/etc主要包含系统管理文件和配置文件;/bin存放二进制可执行文件;/home存放所有用户文件的根目录,是普通用户的工作目录,每个用户都有一个/home目录;/user包含所有的用户程序,是占用空间最大的目录;/dev用来存放设备文件;/root是超级用户的主目录;/lib主要存放动态链接共享库文件;/boot存放操作系统启动时需要用到的文件;/temp存放临时文件;/swap存放虚拟内存交换时所用文件;/var存放运行时需要改变数据的文件。

  ls命令:查看根目录下的文件。

  tree命令:显示路径结构(可使用yum-y install tree命令安装tree工具)。

  文件路径分为绝对路径和相对路径。

  绝对路径是指从根目录(/)开始的路径,用户通过cd命令以绝对路径进入某个文件夹,用户通过pwd命令可以查看当前工作目录的绝对路径。

  相对路径是指对于当前工作目录的路径。

  “..”表示当前目录的上层目录,“.”表示当前目录,“/”表示下层目录。

   

  目录操作包括创建目录、查看目录、切换目录、删除目录。

  mkdir命令:创建一个空白目录,还可以添加“-p”参数来创建一个多层目录

 

   pwd命令:显示当前所在的目录,添加“-p”参数可以显示实际工作目录,而非链接文件本身的目录名。用户通过ls-a命令可以查看隐藏的目录与文件;通过ls-l命令可以查看目录与文件的属性,ls-l可以简写为ll。

 

  cd命令:切换目录。cd不加任何路径表示直接返回root目录,cd-表示返回上次目录。

 

  rmdir命令:只能删除空目录,添加-p参数即可连同上层空目录一起删除

 

  文件操作包括创建文件、查看文件、复制文件、移动文件、删除文件。

  touch命令:可以创建一个空白文件,也可以设置文件、属性。添加-d参数可以修改文件时间。

   

  cat命令:查看内容较少的文件(添加-n显示行号,添加-A显示不可显示控制字符),得切换至根目录(cd /)才可查看

   

  more命令:以逐页的方式显示文件内容,通过空白键向下翻一页,b键向上翻一页

 

  less命令:对文件或其他输出进行分页显示,可用pageup、pagedown与键盘方向键来上下翻看文件,查找文件比more更容易,最后按q键退出。

 

  head命令:查看文件前几行的内容,添加-n显示文件的前n行

 

   tail命令:查看文件后几行的内容,添加-n显示文件的后n行,添加-f可以查看动态文件

 

  

  grep命令:对文件内容进行过滤、搜索关键词,从而快速找到所需内容

 

 cp命令:复制单个文件、复制整个目录,创建链接文件,对比新旧文件而予以更新,文件目录较长时可以用花括号括起不同的部分。

    格式:cp file1(源文件) file2(目标文件)

 

  mv命令:移动或者重命名文件或目录。 格式:mv file1(源文件) file2(目标文件)

  rm命令:删除文件。 格式:rm file2(目标文件或目录)。 添加-r可删除目录,-f可以跳过验证直接执行删除操作。

  rm-rf会直接删除目标文件或目录,不会提供任何恢复机制。

  Vim编辑器主要有三种模式:命令模式、编辑模式、末行模式。

  命令模式:控制光标,对文件进行复制、粘贴、删除、查询等操作。

  编辑模式:进行文本录入与更改。

  末行模式:文档保存与退出,设置编辑环境。(输入“q!强制退出”)

 

第3章:

  Linux系统是多用户、多任务的分时操作系统,系统上每一个进程都有一个特定的文件,每个文件都被一个特定的所拥有。

  如果需要使用系统资源,首先必须向系统超级用户申请为普通用户,然后以普通用户的身份进入系统。超级用户可以对普通用户进行跟踪,并设置他们的访问权限,这样可以保证系统的安全。

  每个用户都属于一个用户组或者多个组,系统可以对一个用户组中的所有用户进行集中管理。

  id命令:查看当前用户登录信息

  UID:用户的ID

  GID:用户所属组的ID

  groups:用户属于的所有组的ID

   

  ll命令:查看文件的所有者(每个文件都有一个所有者)

 

  ps aux | less:查看进程。

  eg:用ps aux命令查看httpd进程:ps aux | grep httpd

 

  /etc/passwd:保存用户名。一行记录对应一个用户,每行记录又被冒号分隔为7个字段,依次为用户名称、密码占位符、用户UID、主组GID、注释性描述、用户主目录、用户的Shell。

  /etc/shadow:保存密码。每行记录由冒号分隔为9个字段,依次为用户名称、加密后的密码、最近改动密码时间、密码不可变更时间(99999没有限制)、密码重新变更时间、密码过期时间、密码过期宽恕时间、用户失效时间、保留。

  $id号越大加密程度越高

  UID为0是特权用户,UID为1~499是系统用户,UID为500以上是普通用户。

  root用户:拥有所有系统权限。系统中大多数设备只能由root控制,如安装或删除软件、管理系统文件和目录等。

  useradd命令:创建用户/组

 

  在Linux下创建一个用户时,若未指定任何组(主组或附加组),系统会默认给该用户创建一个和用户名相同的组作为用户的主组,如果将多个用户划入一个组,只需要对组设定权限即可,由此也能减少很多后台管理上的麻烦。

  “!!”:密码未设置。

  -G参数指定已存在的附加组

  usermod与gpasswd命令:修改功能

  groupadd命令:创建一个新的工作组

  用户组的信息保存在/etc/group文件中,使用tail命令查看

 

   指定GID:加-g参数或者-gid

  userdel命令:删除一个用户。添加-r可以同时在/home目录与mail spool中删除该用户。若用户不存在可以使用rm-rf手动删除

 

   groupdel命令:删除一个用户组

 

   passwd命令:修改密码。只有root用户可以修改其他用户的密码,普通用户修改密码时需要提供原密码,root用户修改普通用户的密码不需要提供原密码。

  su命令:身份切换。 su-qfedu切换到普通用户,su-切换到超级用户。

  加入wheel组的普通用户可以使用sudo命令来执行系统相关操作

  安全用户:在创建用户时,通过-s参数指定用户登录shell为/sbin/nologin,可以将其设置为安全用户。

  rebout重启命令;poweroff关机命令

  echo$SHELL命令:查看用户shell为...

  /etc/login.defs与/etc/default/useradd是命令useradd的配置文件,决定useradd创建用户默认的参数,文件中的配置对root用户无效。

 

第4章:

  U:owner,属主。

  G:group,属组。

  O:other,其他用户。

  r:read(读取),数字设定为4.

  w:write(写入),数字设定为2.

  x:execute(执行),数字设定为1.

  777:可读可写可执行,所有用户所有权限

  000:三不可。

  chown:修改文件属主、属组。修改属主的同时也可以修改属组,只需要在属主与属组之间加入“,”或“:”即可。一般使用“:”以免因属主名称含有“.”造成系统误判。

 

  chgrp:修改文件属组。(只改变文件属组)

   若要将某目录下的所有子目录或文件同时修改属主或属组,只需要在chown与chgrp命令后添加-R即可

 

  chmod:修改文件权限。

   设置权限的两种方式:一种为符号,一种为数字

  符号修改权限是使用u、o、g这三个符号代表属主、属组、其他用户这3种身份,a代表全部身份,r、w、x符号代表读、写、执行,通过赋值符增加、删除、覆盖文件权限。

  eg:创建文件file,给该文件的属主增加执行权限,当查看属主权限字符位出现“x”符号时说明增加执行权成功

 

给file文件的属组增加写入权限,当查看属组权限字符位出现“w”符号时说明增加写入权限成功

同时给所有对象增加读、写、执行权限,在chmod命令后加“a”符号,然后覆盖掉当前全部权限

同时给所有对象删除某一个权限

 同时删除所有对象的全部权限

一次分别给不同对象增加或删除不同的权限

 使用递归参数“-R”

 

创建文件file02,使用数字权限

 

  chown和chmod的区别:

  chown:Linux系统中原来改变某个文件属性的命令

  chmod:Linux系统中用来改变某个文件的访问模式的命令

 

  UGO权限只针对一个用户、一个组与其他用户,使用上有局限性,ACL主要提供传统的UGO的r、w、x权限之外的具体权限设置,可以对单一用户、单一文件或目录进行权限设置。

  getfacl命令:查看ACL权限(显示的内容与使用ll命令查看到的内容相差无几)

 

  setfacl命令:设置ACL权限,对每一个文件或目录进行更精确的权限设置。添加-m可以修改当前文件ACL权限。

  使用getfacl命令查看,用户的权限已修改为“rw-”

 

  新创建用户tom,与其增加“rwx”权限,使用getfacl命令查看

  为组hr增加“rw”权限

   当给用户增加“-”权限,如果使用ll查看会有读取限制,但使用getfacl命令查看,权限会变成“对文件没有任何权限”

   添加“-x”可以删除用户对文件的所有权限

   添加“-b”可以删除所有扩展ACL权限,回到UGO的基本权限

 

  mask:用来指定最大有效权限。系统给用户赋予的ACL权限需要和mask的权限逻辑"相与",“相与”之后的权限才是用户的真正权限

 

  eg:将mask权限设置为“r”,用户权限与其“相与”之后,有效的权限为“r--”,用户真正的权限也就是“r--”

 

  eg:将mask权限设置为“rw”,用户的权限是“rx”,那么“相与”后的最终权限为“r--”

 

  mask并不能影响所有用户,比如owner与other权限没有因mask变化而变化

  为了方便管理文件权限,通常将other的权限置为空

 

  mask作用:能临时降低用户或组(除owner和other)的权限,而不是如“setfacl-b”命令删除所有权限

  只要有任何ACL权限设置,mask会自动还原

 

 

   default:可以继承上一个目录的权限

  添加“d”参数可对目录/home以及其下新建的文件有读、写、执行权限

 

  当用户执行passwd命令时,使用“ps aux”命令查看当前进程发现,真正运行passwd的是root用户

 

  SUID权限——用户。。是Linux文件系统的一种特殊权限位。

  SUID权限的作用是:当一个二进制程序文件设置了SUID权限后,无论谁运行这个程序,它都会以程序文件的所有者的权限运行。即使一个普通用户运行了一个具有SUID权限的程序,这个程序也会获得程序所有者的权限来执行。

  SUID权限的设置方法:使用chmod命令设置文件权限,例如:chmod u+s  /usr/bin/cat。给文件添加一个s位,表示设置SUID权限。

  SUID权限的安全性问题:如果一个SUID程序存在安全漏洞,可能会导致普通用户获得超级用户权限;只应给 critically necessary 的系统程序设置SUID,不建议给普通二进制文件设置。SUID权限可以让普通用户临时获得高级权限执行特定任务,但同时也带来一定的安全隐患,需要谨慎使用。

 

  SGID权限——用户组。Linux文件系统的一种特殊权限位。

  SGID权限的作用:当一个二进制程序文件设置了SGID权限后,无论谁运行这个程序,它都会以程序文件的所属组的权限运行。即使一个用户不在该程序文件所属组内,运行该程序也会获得该程序组的权限。

  SUID权限的设置方法:使用chmod命令设置文件权限,例如:chmod g+s /home/hr

  与SUID权限相比,SGID权限的危害性较低,因为只提供组权限,而不是超级用户权限。但是如果程序存在安全漏洞,也可能被利用获得不应有的组权限。所以在使用SGID时,同样需要审慎评估是否真需要,仅限于必要的系统服务程序。可以通过SGID实现更好的资源共享,但也需谨防潜在安全隐患。

 

  Sticky权限——删除。是Linux文件系统权限的一种特殊位。

  Sticky权限的作用:只有目录的所有者或者该目录文件所有者才能删除或修改该目录下的文件。对于其他用户,即使具有写权限,也只能删除或修改自己创建的文件,而不能删除其他用户创建的文件。

  设置Sticky位的方法:使用chmod命令给目录设置t位:chmod +t 目录名  

  例如:chmod +t /tmp,这会给/tmp目录设置Sticky位。添加“t”后用户只能删除自己的文件

  /tmp目录为全局可写,其权限只能为1777,否则会导致程序不能正常运行

  权限的字符位只有9位,增加的特殊权限会占用“x"权限的位置。为了区分目录或文件是否含有”x“权限,系统会以特殊权限的大小写方式给与提示。当符号为大写时表示不含有”x“权限,当符号为小写时表示含有”x“权限

 

  相比SGID和SUID,Sticky位提供的不是执行权限,而是对目录文件操作的额外限制。它可以在需要多个用户共享目录资源的场景下提供更好的访问控制。但是需要注意,具有写权限的用户仍然可以修改其他用户的文件,只是不能删除。所以Sticky位无法完全防止资源被非法修改,但可以在一定程度上保护文件不被删除。

高级权限 数字符号 文件 目录
SUID 4 以属主身份执行  
SGID 2 以属组身份执行 继承属组
Sticky 1   用户只能删除自己的文件

 

 

  

  文件属性chattr:是Linux下用于管理文件属性的命令。

  chattr主要用于设置和查看ext2/ext3/ext4文件系统上的文件属性标志位。

  文件属性标志包括:

  a:只读属性。文件不能被删除、修改、重命名或链接。

  A:不可截断属性。文件不能被截断成更小的大小。

  c:只读副本属性。文件内容会被缓存在内存中,防止文件被外部修改。

  i:不可变更属性。文件内容不能被修改,只能被追加。

  s:同步属性。文件内容会同步写入磁盘,防止数据丢失。

  使用chattr命令设置文件属性:chattr +a 文件名 #设置只读属性;chattr +c 文件名 #设置只读副本属性

  使用chattr命令查看文件属性:chattr 文件名

  删除文件属性:chattr -a 文件名 #删除只读属性

  chattr主要用于保护系统文件不被意外修改,或者提高文件的读写效率。需要注意的是,文件属性设置后无法正常修改文件,必须使用chattr先删除属性才能修改文件。所以需要谨慎设置,避免锁死重要文件。

 

  进程掩码umask:是Linux/Unix系统中的一个命令,用于设置新建文件或目录的默认权限掩码。

  umask的值是一个三位八进制数,每一位分别对应用户(u)、组(g)、其他用户(o)三种访问类型的读(4)、写(2)、执行(1)三种权限。

  例如:umask 022,则新建文件默认权限为664(rw-rw-r--),目录为777(rwxrwxrwx)。umask 027,则新建文件默认权限为640(rw-r-----),目录为750(rwxr-x---)

  umask值的计算规则是:文件/目录最大权限为666/777。对应umask值进行位与运算,去除对应的权限即为实际默认权限

  查看当前用户的umask值:umask

  临时修改umask值:umask <值>

       永久修改umask值:修改/etc/profile或用户主目录下的.bashrc文件,添加umask <值>命令

  umask主要用于控制新建文件或目录的默认权限,避免信息外泄。根据实际需要,可以设置较严格的umask值来保护数据安全。同时需要注意,对已存在的文件或目录,umask设置无效,不会改变它们的原有权限。

 

第5章:

  进程的含义:正在运行的程序,包括这个运行的程序所占用的系统资源。进程是具有一定独立功能的程序关于某个数据集合的一次运动活动,是系统进行资源分配和调度的一个独立单位。

  进程的组成部分:(1)已分配内存的地址空间;(2)安全属性,包括所有权凭据和特权;(3)程序代码的一个或多个执行线程;(4)进程状态

  每个进程都有唯一的进程标识PID,一个PID只能标识一个进程,PPID为父进程ID,需要给该进程分配系统资源。不同的进程对系统资源的需求是不一样的。

  进程状态:指程序执行过程中的变化。进程状态随着程序的执行和外界条件的变化而转换。一般分为:就绪态、运行态、阻塞态。

  就绪态:进程已经具备运行条件,但是CPU还没有分配过来。

  运行态:进程占用CPU,并在CPU上运行

  阻塞态:进程因等待某件事发生而暂时不能运行

 

  静态查看进程:

  ps命令可以查看静态进程,仅仅是捕获某一个瞬间某一个进程的状态,类似于给进程制作快照。

  ps aux命令:会显示系统中所有正在运行的进程信息,包括进程的PID(进程ID)、进程名称、占用CPU时间、内存使用情况等

aux                            功能
a 显示终端上的所有进程,包括其他用户的进程
u 表示列出进程的用户
x 显示所有终端的进程

 

  当TTY为“ ?”时表示不依赖任何终端运行

列名 说明
USER 运行进程的用户
PID 进程ID
%CPU CPU占有率
%MEM 内存占用率
VSZ 占用虚拟内存
RSS 占用实际内存
TTY 进程运行的终端
STAT 进程状态
TIME 进程累计占用CPU时间
COMMAND 进程发起者

 

  ps aux --sort -%cpu命令:用于查看系统中运行的进程,按照CPU占有百分比的降序排序

 

  ps-ef命令:查看UID、PID、PPID等信息。它结合了两个命令:ps 和 grep。ps 命令用于显示进程信息,而 grep 命令用于过滤结果。在这个组合命令中,ps -ef 用于在 ps 命令的结果中搜索与指定关键词匹配的进程。

 

  ps aox命令:用来查看系统中所有进程的详细信息,如进程ID、用户、占用资源等。

  一般情况下不是所有显示的内容都有意义,为了快速查找,需要显示的内容简洁并有针对性,用户可以使用“ps aox”命令自定义显示的字段

 

  查看指定进程PID的方法:

 (1)使用cat命令

 (2)使用pidof命令

  (3)使用pgrep命令

 

 

  动态查看进程:

  top命令:可以实时动态地显示进程。使用top命令动态查看进程时,进程信息分为上下两部分,上面为整体信息,下面为每一个进程的信息。

 

 如图所示:

Tasks:230 total:进程个数

1 runnin:正在使用CPU的进程个数

229 sleepi:进程休眠个数

0 stopped:进程停止个数

0 zombie:进程僵死个数

 

按M键以内存占用率排序

 

按P键以CPU占有率排序

 

按N键以PID数值大小排序

 

按R键对排序进行反转

 

 按F键显示自定义显示字段

 

按1键显示所有CPU的负载

 

  top -d:设置刷新时间,以秒为单位

 

  top -p:可以指定查看一个或多个进程的动态信息

 

  top -u:可以查看用户的进程

  top -n:可以设置刷新次数,完成后自动退出

 

 

  kill命令:终止指定进程的运行,通过向进程发送指定的信号来结束相应的进程。

  kill -l:查看全部信号

信号编号 名称 特性及意义
1 SIGHUP 启动被终止的进程,重新加载,PID不会发生变化
9 SIGKILL 强制终止进程,使用此信号可能导致进程无法再次启动
15 SIGTERM 默认信号,以正常流程终止进程,允许进程释放资源。若进程已出现问题无响应,此信号将不起作用
18 SIGCONT 恢复进程
19 SIGSTOP 暂停进程

 

  killall命令:用于终止某个指定名称的服务所对应的全部进行

 

  

第六章 I/O重定向与管道

6.1 I/O重定向

  I/O重定向:I/O重定向是一种操作系统的功能,它允许用户将标准输入(stdin)和标准输出(stdout)重定向到其他文件或设备上。通过使用I/O重定向,用户可以将程序的输入和输出从默认的终端改变为文件或其他设备。

  使用I/O重定向将程序的输出重定向到一个文件中,这样程序的输出就会被写入到该文件中,而不是显示在终端上。

  在Linux中,可以使用特殊的符号来实现I/O重定向。例如,使用">"符号可以将程序的输出重定向到一个文件中,使用"<"符号可以将文件的内容作为程序的输入。此外,还有一些其他的符号和命令可以用于更复杂的I/O重定向操作。

  用快捷键重新打开一个终端:Ctrl+Alt+T

 

  eg.打开一个终端3,输入date命令,会显示当前时间。如果在date命令后加“>”并指向date.txt文件,那么结果就会写入date.txt文件。接着打开一个终端4,将终端3的date输出结果重定向到终端4

 

  文件描述符:每一个进程在运行中都会打开一个文件,每一个文件都会有一个指定的数字标识,这个标识就叫文字描述符

  文件描述符通常是非负整数,0、1、2这三个文件描述符是绝大多数进程都有的。0表示标准输入,可以理解为键盘输入;1表示标准输出,输出到终端;2表示标准错误,输出到终端;3及以上为常规文件的描述符。当一个文件被打开时,操作系统会分配一个文件描述符给该文件,并返回给应用程序。应用程序可以使用文件描述符进行对文件的读写操作,比如使用文件描述符作为参数调用read()和write()函数。

  文件描述符发的含义:

文件描述符 通道名 说明 默认连接 用法
0 stdin 标准输入 键盘 只读
1 stdout 标准输出 终端 只写
2 stderr 标准错误 终端 只写
3+ filename 其他文件 可读可写/只读/只写

 

  文件描述符的使用可以让应用程序和操作系统之间进行有效的交互,使得应用程序能够访问和操作文件。在进行I/O重定向时,文件描述符可以被重新指定到其他文件或设备上,从而改变程序的输入和输出。

  eg.在/proc下随机查看一个进程打开的文件

 

  重定向:在Linux系统中,重定向是一种将程序的输入或输出重定向到其他地方的方式。它可以将命令的输出发送到文件中,或者将文件作为命令的输入。

 

  cat命令默认文件描述符为0,输入重定向把键盘输入改为/etc/hosts文件输入

[root@localhost suli]# cat
linux
linux
suli
suli
[root@localhost suli]# cat 0 < /etc/hosts

 

 

  6.1.1 输出重定向

  输出重定向:是一种将命令的输出结果重定向到指定位置的技术。在Linux系统中,通过使用特殊的符号和命令,可以将命令的输出结果重定向到文件、设备、管道等不同的位置。

  通过输出重定向,可以将命令的输出结果保存到文件中,以便后续使用或分析;也可以将命令的输出结果传递给其他命令或程序进行处理。

 

  输出重定向分为正确输出和错误输出

  正确输出:1>、1>> 等价于>、>>,1可以省略

  错误输出:2>、2>>

  其中,“>”表示覆盖,“>>”表示追加

  

  &>:将命令的正确结果和错误结果都输出到相同的位置

  2>&1:将命令的错误输出和标准输出合并重定向到一个文件中

  

 

  6.1.2 输入重定向

  输入重定向:将外部数据(如文件、管道或其他程序)注入到进程中的技术。在Linux系统中,输入重定向符号为`<`。

 

  grep命令是Linux系统中的一个强大工具,用于在文件或文本中搜索指定的模式。

  eg.使用grep命令过滤root,没有改变输入端,默认为键盘,接着把输入重定向到/etc/passwd

  加或不加“<”符号,输出结果都一样,但原理不一样。/etc/passwd一个是作为文件,一个是作为参数。

  

  dd命令是Linux系统中一个非常实用的工具,主要用于复制(拷贝)文件和转换文件。它的全称是“data duplicator”,可以看作是Linux世界的搬运工。dd命令对于所有设备和文件都一视同仁,既可以用于备份,也可以用于快速复制系统环境

  eg.使用dd命令从/dev/zero中读取数据并写入到file01.txt文件,每写入1MB,一共写入两次

  使用输入重定向与输出重定向的方式也可以实现同样的功能

 

  at 命令:是 Linux 系统中用于定时执行任务的命令。它可以将任务提交到队列中,并指定在特定的时间执行。

  eg.使用at命令创建一个计划任务,从现在开始5分钟后创建用户linux,按组合键Ctrl+d结束

  若同时创建多个用户,以此方法从键盘输入会十分繁琐,使用输入重定向会非常方便

 

 

  6.1.3 重定向综合案例

  eg.利用重定向建立多行文件(命令行)

  使用echo命令重定向并不能建立多行文件,一般使用cat命令,在键盘上输入文本按回车键换行,完成后按组合键Ctrl+d结束

  “>”表示覆盖,但在此处是指覆盖原来的file03.txt,输入的3行文本一次输出到file03.txt。如果退出后再次输出,那将覆盖掉先前的文本内容,此时就需要用“>>”进行追加。

  每次写入文本都需要按组合键Ctrl+d结束显得比较繁琐,用户可以自定义一个结束的符号,通常使用"EOF"。

 

  eg.利用重定向建立多行文件(脚本)

  命令行和脚本都可以操纵Shell。在命令行中可以用组合键Ctrl+d退出,但在脚本中不可以。下面利用脚本创建多行文件,在脚本文件中写入文件,并加入“EOF”结束符号

   使用bash执行该脚本:

[root@localhost suli]# bash create_file.sh
[root@localhost suli]# cat file200.txt
111
222
aaa
bbb
EOF

  在编写脚本时,为了排版整齐,经常在“EOF”前面使用tab键缩进,同时在输入重定向符后添加“-”

[root@localhost suli]# vim create_file.sh
           cat >file300.txt <<-EOF
           111
           222
           aaa
           bbb
           EOF
[root@localhost suli]# cat file300.txt
111
222
aaa
bbb

 

  eg.多条命令输出重定向

  如果需要将两条命令输出重定向,则需要添加括号

   让命令在后台运行,并且输出重定向到文件

   终止后台程序

 

 

  6.1.4 Subshell

  Subshell是指圆括号里的命令会在另外的进程中执行。当需要让一组命令在不同的目录下执行时,采用这种方法可以不修改主脚本的目录。

  对比不加圆括号的命令与加圆括号的命令,如下所示:

 

   如果不希望某些命令的执行对当前Shell环境产生影响,请在Subshell中执行

 

 

6.2 进程管道

  进程管道是一种在Linux系统中用于将多个进程连接起来以实现数据流动的机制。通过将一个进程的输出与另一个进程的输入相连接,可以实现数据的传递和处理。

  管道实际上也是一种重定向,重定向字符控制输出到文件,管道控制输出到其他程序

  管道的作用是把上一个进程的输出作为下一个进程的输入,利用管道可以把若干个命令连接在一起

  通过使用管道,我们可以将多个命令连接在一起,实现复杂的数据处理操作。这种方式非常灵活,可以根据实际需求组合不同的命令来完成特定的任务。 需要注意的是,管道连接的命令需要按照顺序依次执行,并且每个命令的输入和输出需要符合预期的格式和约定。另外,管道会将前一个命令的输出直接传递给下一个命令,因此在处理大量数据时,需要注意管道的性能和资源消耗。

  

  eg.将etc/passwd/中的用户按UID数值大小排序并显示前3行

   其中,“-t”指定字段分隔符,“-k”指定字段,“-n”表示按数值大小排序

  

  eg.指定出最占CPU的5个进程

 

  eg.统计/etc/passwd中用户使用的Shell类型

  取出第7列(Shell) | 排序(把相同项归类)| 去重

  awk是一个非常强大的文本处理工具,可以快速提取出有用的信息。“-F”表示指定字段分隔符,默认为空格,这里以“:”作为分隔符;“$7”表示第7个字段;整条命令表示取出/etc/passwd文件的第7列

   使用管道符“1”,添加sort命令进行排序(把相同项归类)

   添加uniq命令,去掉重复的Shell类型

  添加“-c”统计出每种Shell类型的数量

 

  tee命令能被用来重定向管道的输出,到标准输出和指定文件中

  tee命令在需要同时将命令的输出显示在终端上并保存到文件中时非常有用。它可以帮助用户在数据处理过程中保存输出结果,同时仍然能够查看处理的进展和结果。

  tee命令的功能类似于生活中的三通水管,一条输入满足两个需求。在执行Linux命令时,一个进程标准输出通过管道作为下一个进程的标准输入,同时通过tee管道重定向一个文件或终端

 

   若要把输出保存在文件中,又要在终端上看到输出内容,就可以使用tee命令

 

 

 

第七章 存储管理

7.1 存储方式

  从连接方式上,存储分为以下3种类型:

  本地存储:直接插在服务器上的硬盘,系统文件存放在本地。

  外部存储:可以理解为平时使用的移动硬盘,不过移动硬盘用的是USB接口连接,一般外部存储可以使用SCSI线、SATA线、SAS线、FC线。

  网络存储:以以太网、FC网络。当存储的数据量非常庞大时,不可能再存储到本地,需要存储到专门的存储设备上或存储集群里,这时用户可以通过网络去连接与使用这些数据。

 

  从工作原理上,硬盘分为固态硬盘与机械硬盘

  固态硬盘内部是集成固态电子存储芯片阵列,分为存储单元和控制单元两部分。

  固态硬盘摒弃传统磁介质,采用电子存储介质进行数据存储和读取,突破了传统机械硬盘的性能瓶颈,拥有极高的存储性能,是存储技术发展的里程碑。 固态硬盘的全集成电路化、无任何机械运动部件的革命性设计,从根本上满足了人们在移动办公环境下对数据读写稳定性的需求,全集成电路化设计允许固态硬盘做成任何形状。

  机械硬盘在其内部占最大区域的为盘片,盘片上方为读/写磁头、控制电机、磁头控制器、数据转换器。可以含有很多盘片,一般不会超过5张,每张盘片有两个面,每一个盘面有一个编号,编号自下而上从0开始。盘面有分成若干扇形的区域,称作扇区。读写数据时,盘面会高速旋转。硬盘转速越快,访问时间越短,整体性能越好。

 

  固态硬盘的优点:

    (1)固态硬盘不需要机械结构,完全半导体化,不存在数据查找时间、延迟时间和磁盘寻道时间,数据存储速度快

    (2)固态硬盘全部采用内存芯片,经久耐用,防震抗摔,即使与硬物碰撞,数据丢失的可能性极小

    (3)得益于无机械部件,固态硬盘没有任何噪音,功耗低

    (4)SSD质量小,比1.8英寸(1英寸=2.54厘米)机械硬盘轻20~30克,使得便携设备搭载多块固态硬盘成为可能。同时因其完全半导体化,无结构限制,可根据实际情况设计各种接口和形状

      (5)固态硬盘的读/写速度远胜于机械硬盘

  固态硬盘的缺点:价格昂贵,容量偏小,数据恢复难度较大

 

  机械硬盘的优点:技术成熟,容量大,价格相对低廉,数据恢复可能性较高

  机械硬盘的缺点:读写速度较慢,响应时间较;抗震动性能差,易损坏; 能耗较高,噪音较大;随着科技进步,机械硬盘会逐渐被固态硬盘取代。

 

  从尺寸上,硬盘分为3.5英寸、2.5英寸和1.8英寸3种类型,其中1.8英寸的硬盘不常见

  从插拔方式上,硬盘分为热插拔和非热插拔2种类型。目前所有的服务器硬盘都支持热插拔方式

 

  从硬盘插口上,硬盘分为以下几种类型:

  IDE——SATA硬盘

  SCSI——SAS硬盘

  其他——PCIe、FC硬盘

  SAS是新一代的SCSI技术,SAS硬盘和现在流行的SATA硬盘相似,都是采用串行技术以获得更高的传输速度,并通过缩短连接线改善内部空间

 

  硬盘的两种分区方式:

分区类型 磁盘容量 分区软件 分区数
MBR <2TB fdisk 14个分区(4个主分区,扩展分区,逻辑分区)
GPT 不限 gdisk 128个主分区

  注意:从MBR转换到GPT或从GPT转换到MBR将会导致数据全部丢失!

 

 

7.2 基本分区

  基本分区与逻辑卷相比有一些劣势,例如,前期把一个分区规划成100GiB,后期发现空间不足,是无法扩容的,而逻辑卷可以弹性扩容。然而,有一些分区还是需要使用这种传统的基本分区,如存放引导文件的boot分区。

  基本分区是指在计算机存储器中,按照一定的大小和规定进行划分的一种存储区域。

  使用基本分区,首先要选择一种分区方式(MBR或GPT),其次要创建文件系统(也就是通常所说的格式化),最后进行挂载才能使用

 

  7.2.1添加新硬盘

 

  

  7.2 2 MBR分区

  采用MBR分区表形式创建分区,可使用fdisk命令,添加“-l”可以查看系统所挂硬盘个数及分区情况

   

  比较硬盘sda与sdb的区别

  

  采用MBR分区表,使用fdisk命令对sdc硬盘进行分区

   输入“m”参数可以查看帮助信息,了解每个参数的具体作用、分区具体操作等

  输入“n”参数尝试创建新的分区

 

   因为采用的是MBR分区表系统,所以有两个选择,一个是创建主分区,另一个是创建扩展分区,此处选择主分区,可输入“p”参数,系统默认选择主分区,直接按回车键即可

   分区编号1~4,系统默认为1,按回车键即可

   系统提示定义扇区的起始位置,系统会自动选择最靠前的空闲扇区位置,直接按回车键即可

   用户可以通过添加扇区或添加尺寸的方式定义扇区的终止位置,也就是定义最终分区空间的大小,一般选择使用添加尺寸的方式,此处添加100MB

 

   输入“p”参数,查看硬盘中的分区信息

   输入“n”参数再次创建一次分区

   第2个分区创建为扩展分区,输入“e”参数,分区编号使用默认为2,按回车键

  创建扩展分区是为了以后创建更多的逻辑分区,建议扩展分区占用全部剩余扇区,按回车键即可

 

  输入“p”参数,查看目前硬盘中的分区信息

   输入“n”参数,系统提示选择分区类型,包括主分区与逻辑分区,目前已经没有可用扇区,不能再次创建主分区。输入“l”参数,创建逻辑分区

   输入“p”参数,查看已创建的逻辑分区的信息

 

   扩展分区不是一个严格意义上的分区,不能直接使用,仅仅是指向下一个逻辑分区的指针

  输入“w”保存所有分区设置

   使用lsblk可以查看所有分区信息

   使用ll命令查看新分区的设备文件

   在虚拟机或云主机上,分机不需要重启系统,内核会自动识别设备的新分区并为它创建设备文件,但在真实的物理硬盘上此时不会显示设备文件,需要重启系统或者使用partprobe命令。partprobe命令可以在不重启系统的情况下,让内核强制读取分区表,并为新设备创建设备文件。

 

 

  7.2.3 GPT分区

  采用GPT形式创建分区,其创建过程与MBR无大差别。

  使用gdisk命令对sdb硬盘进行分区,系统显示创建新的GPT分区表

   输入“?”可以查看帮助信息,输入“n”参数进行分区,此时没有分区选择,直接按回车键创建主分区,起始扇区使用默认值,按回车键定义终止扇区。设置为添加100MiB,系统提示当前类型是Linux系统,直接回车

   再创建一个分区,定义终止扇区时设置为添加5GiB

  输入“p”参数显示分区信息,输入“w”保存,系统会提示即将写入GPT数据,这将覆盖已存在的分区,询问是否继续,输入“y”即可

  操作成功,如果真实硬盘需要执行partprobe命令,此时使用lsblk命令可以查看新分区信息

 

 

  7.2.4 创建文件系统

  创建分区后并不能立即存放数据,需要对分区进行格式化。格式化是组织文件系统的方式,常见的文件系统有EXT与XFS。在终端输入“mkfs”后连续按两次tab键可以查看所有文件系统类型,CentOs7的文件系统默认为XFS

   

  使用EXT4文件系统格式化/dev/sdb1主分区。块是文件存储的最小单元

 

     使用EXT4文件系统格式化/dev/sdb2主分区

[root@localhost suli]# mkfs.ext4 /dev/sdb2

 

  使用XFS文件系统格式化/dev/sdc1主分区

[root@localhost suli]# mkfs.xfs /dev/sdc1

 

  使用XFS文件系统格式化/dev/sdc5主分区

[root@localhost suli]# mkfs.xfs /dev/sdc5

 

 

  7.2.5 挂载分区

  格式化完成后需挂载分区,首先创建两个目录作为挂载点,然后使用mount命令临时把sdb01分区与sdb02分区分别挂载到data01与data02目录上。现在这两个目录不再是两个普通的目录,而是设备的挂载点,用户要往设备中存放数据,需要借助挂载点

 

   使用“df-h”命令查看文件系统的挂载点

[root@localhost suli]# df -h

 

  挂载完成后,分别在这两个目录下创建两个空目录dir01与dir02,然后使用ll命令查看data01与data02目录,同样大小的空目录所占的存储空间是不一样的

[root@localhost suli]# mkdir /data01/dir01  #mkdir /data02/dir02  #ll /data01  #ll /data02

   

  使用mount命令挂载是临时性的,系统重新启动后便失效,需要再次挂载。用户可以修改/etc/fstab配置文件,使其永久有效

  blkid命令:用于查询磁盘识别信息,如磁盘分区、U盘等。它返回关于磁盘设备的详细信息,如设备名称、设备类型、挂载点等。

[root@localhost suli]# blkid    //查看UUID
[root@localhost suli]# vim /etc/fstab    //修改挂载点配置文件

 

  重新启动系统就可以读取新挂载的设备,也可以使用“mount -a”命令读取/etc/fstab文件并挂载设备。使用df命令查看已挂载设备信息,添加“T”参数可以显示设备文件的类型,添加“h”参数可显示设备大小

[root@localhost suli]# mount -a
[root@localhost suli]# df -Th

 

  完成硬盘的分区、挂载与格式化之后,可以尝试通过挂载点存储数据

  使用mount命令可以显示设备的权限

 

第九章 文件查找、打包压缩及解压

9.1 文件查找

   echo命令可以查看变量PATH的值

   其值被冒号分隔成7个字段,每个字段都代表一个目录

 

  使用which命令在环境变量PATH设置的目录中查找符合条件的命令文件,可查找其是否存在以及执行的位置

  

  把PATH变量重新定义为/,此时输入任何命令都是从/这一级查找,查找ls命令显示不存在

 

  locate命令可以让用户快速查找到所需要的文件或目录。它不搜索全部数据信息,而是搜索数据库/var/lib/mlocate/mlocate.db。该数据库包含本地系统内所有文件名称及路径。系统会自动创建这个数据库,并且每天更新一次。

  在使用locate命令查找文件时,有时可以找到已经被删除的文件,但新创建的文件却无法查找到,原因是数据库文件没有被系统更新。

  为了避免上述情况,在使用locate命令之前可以先使用updatedb命令手动跟新数据库

[root@localhost suli]# touch suli.txt
[root@localhost suli]# locate suli.txt
[root@localhost suli]# updatedb
[root@localhost suli]# locate suli.txt
/root/suli.txt

 

  与locate命令相比,find命令搜索速度较慢,它并不会索引目录,而是对整个目录进行便利,这会占用很多系统资源。为了提供效率,建议在使用find命令时尽量在指定目录下进行搜索,以缩小查找范围。

  find命令可以根据文件名查找

  eg.在/目录下查找ifcfg-ens33网卡文件

[root@localhost suli]# find / -name "ifcfg-ens33"

 

  添加“i”参数忽略大小写

[root@localhost suli]# find / -iname "ifcfg-ens33"
/etc/sysconfig/network-scripts/ifcfg-ens33

 

   "*"符号为通配符,在不确定文件名称时可以使用

[root@localhost suli]# find / -iname "ifcfg-*"

 

  如果已知文件的大概位置,建议提供可能存在的路径,用关键词逐渐缩小范围,从而提高查找效率。

 

  find命令还可以根据文件大小查找

  eg.在/etc目录下分别查找大于、等于、小于5MiB的文件

[root@localhost suli]# find /etc/ -size +5M
[root@localhost suli]# find /etc/ -size 5M
[root@localhost suli]# find /etc/ -size -5M

  添加“-ls”可以查找文件的详细信息

[root@localhost suli]# find /etc/ -size +5M -ls

 

  find命令在不指定目录的层级时,会逐层地对文件系统进行搜索,查找效率低下。

  通过“-maxdepth”可以指定查找的目录深度

[root@localhost suli]# find / -maxdepth 3 -a -name "ifcfg-en*'
[root@localhost suli]# find / -maxdepth 4 -a -name "ifcfg-en*'
/rtc/sysconfig/network-scripts/ifcfg-ens33

 

  find命令还可以根据时间查找(atime、mtime、ctime)

  eg.查找修改时间距当前时间大于、等于、小于5天的文件,此处的5天是从修改的那一刻计算,共5×24小时,并非日期

[root@localhost suli]# find /etc -mtime +5
[root@localhost suli]# find /etc -mtime 5
[root@localhost suli]# find /etc -mtime -5

 

  find根据文件属主、属组查找

[root@localhost suli]# find /home -user jack  //属主是jack的文件
[root@localhost suli]# find /home -group hr  //属组是hr组的文件
[root@localhost suli]# find /home -user jack -group hr 
[root@localhost suli]# find /home -user jack -a -group hr 
[root@localhost suli]# find /home -user jack -o -group hr 
[root@localhost suli]# find /home -nouser
[root@localhost suli]# find /home -nogroup
[root@localhost suli]# find /home -nouser -o -nogroup

 

  find命令根据文件类型查找

[root@localhost suli]# find /dev -type f     //f普通文件
[root@localhost suli]# find /dev -type d     //d目录文件
[root@localhost suli]# find /dev -type l     //l链接文件
[root@localhost suli]# find /dev -type b     //b块设备文件
[root@localhost suli]# find /dev -type c     //c字符设备文件
[root@localhost suli]# find /dev -type s     //s套接字文件
[root@localhost suli]# find /dev -type p     //p管道文件
  

 

   find命令根据文件权限查找

[root@localhost suli]# find . -perm 644 -ls  //查找权限为644的文件
[root@localhost suli]# find . -perm -644 -ls  //查找权限包含644的文件

 

  find查找包含SUID权限的文件

[root@localhost suli]# find /usr/bin /usr/sbin -perm -4000 -ls

 

  find查找包含SGID权限的文件

[root@localhost suli]# find /usr/bin /usr/sbin -perm -2000 -ls

 

  find命令还可以设置处理动作,默认动作为“-print”

  eg. 查找当前目录下的qf.txt文件并删除

 

 

9.2 文件打包压缩

  文件过大会占用很多硬盘存储空间,在网络传输的过程中也会消耗很长时间。对文件进行打包压缩后,相同容量能够存储更多数据,在网络传输时因数据量的降低而速度更快。

  Linux系统支持的打包压缩命令有很多种,不同的命令所用的压缩技术不同,彼此无法相互解压缩。压缩文件的名称会添加后缀,如.gz、.bz2、.tar.xz、.tar.gz

  eg. 创建目录dir01,在目录下创建20个文件file1~file20

 

  使用gzip命令对dir01目录进行压缩。完成后每个文件都增加了.gz后缀

[root@localhost suli]# gzip dir01/*
[root@localhost suli]# ls dir01/

  gzip命令只对单一的文件进行压缩,对目录压缩也只是分别对文件进行压缩,并不能将多个文件打包为一个大文件

 

  tar命令可以将多个目录与文件打包在一起,同时还可以使用gzip命令对文件进行压缩

  “-c”参数表示创建一个打包文件,“-z”参数表示通过调用gzip对文件进行压缩,“-j”参数表示通过调用bzip2对文件进行压缩,“-J”参数表示通过调用xz对文件进行压缩,"-f"参数表示后面为被处理的文件名称。在Linux系统中并不存在文件扩展名,但为了用户识别分别,创建文件名称应添加后缀。

 

 

9.3 文件解压

   为解压某个压缩文件时,首先需要知道该文件是有何种压缩方式创建出来的,然后用相应的解压方式解压文件。

  当用户不清楚使用何种压缩工具压缩时,可以通过file命令查看文件的压缩信息

 

  在不解压的情况下,使用tar命令也可以查看文件的压缩信息,添加“-t”参数可查看打包文件的文件名

   使用tar命令解压文件,添加“-x”参数表示解打包或者解压缩,“-C”参数表示解压至指定目录。解压比较大的文件需要消耗较长的时间,添加“-v”参数可以显示解压过程。

  eg. 将etcl-gzip.tar.gz解压至/var/tmp目录下

[root@localhost suli]# tar -xvf etc1-gzip.tar.gz -C /var/tmp
[root@localhost suli]# ls /var/tmp
abrt
etc
sssd_is_running

 

  后缀为.zip的压缩文件,直接使用unzip命令解压即可

[root@localhost suli]# unzip xxx.zip

 

 

 

 

 

 

 

 

 

 

 

  

 

标签:文件,Linux01,用户,命令,suli,权限,root
From: https://www.cnblogs.com/xinxintingting/p/17810098.html

相关文章

  • linux018之安装mysql
    linux上安装mysql:第一步:查看是否已经安装mariadb,mariadb是mysql数据库的分支,mariadb和mysql一起安装会有冲突,所以需要卸载掉。yumlistinstalled|grepmariadb:查看是......
  • linux017之安装tomcat
    linux安装Tomcat:一、安装tomcat之前,需要先配置好jdk,不会配置jdk可以看着篇文章:https://www.cnblogs.com/FBGG/p/17133711.html二、下载Tomcat,地址:http://tomcat.apache.......
  • linux016之安装JDK
    linux上安装JDK:一:首先检查一下linux上是否已经安装有jdkrpm-qa|grepjdk:查询目前系统已安装的jdk,直接复制该命令执行,如下图就是系统已经安装好的JDK  rpm-qa......
  • linux015之软件包的管理
    linux中软件安装包的管理:RPM:简介:RPM是linux中一种软件安装工具,安装linux之初就已经安装好了的,直接使用它的命令即可。这个工具相当于手动安装软件,需要自行......
  • linux014之进程和服务管理
    linux中的进程管理:查看进程命令:ps:查看应用级别的进程ps-e:查看系统+应用级的进程ps-ef:显示进程的全部信息(这个命令经常用)ps......
  • linux013之文件和目录的权限管理
    用户、组、文件目录的关系:简介:用户和组关联,组合文件目录关联,这样就实现了用户对文件的权限管理。首先来看一下,一个文件或目录的权限是怎么查看的,ls-l,如下,这个信息怎......
  • Linux01
    Linux网络配置一些常见命令ctrl+alt+t//打开终端sudoaptinstallnet-tools//安装网络工具ifconfig//查看IP地址......
  • linux012之 压缩和解压缩、打包命令
    linux中有关压缩和解压的命令,常用的一共有三组命令:第一组:压缩和解压文件,只能操作文件,不能操作目录,且只能操作单个文件。zgip 文件名:压缩单个文件,会自动......
  • linux011之搜索命令find
    linux关于搜索文件或目录的命令find(重要):find*.txt:默认在当前目录下所有.txt文件,*代表通配符,通配符可以在前面也可以在后面。find路径*txt:搜索指定目录下所......
  • linux010之网络管理
    简介:在实际工作中,项目上会给你一个linux系统,然后再给你一个局域网地址,让你将linux的网络配置到局域网上,方便后续操作。如果在虚拟机上配置网络?在linux的网络配置文......