Linux教程(上)

个人公众号:「小知识酷」,在这里我会不定期分享一些日常思考、学习随笔、个人成长、笔记整理、健康小知识,欢迎关注(/≧▽≦)/

声明:文中出现的mrflysandflysand都是用户名

1.3 Linux内核版本

  • 任何版本的Linux都使用相同的内核--http://www.kernel.org/
  • 三个位置数字的含义:4.13.6——主版本.次版本.修改版本
    • 主,次版本为基数:发展中版本
    • 主,次版本为偶数:稳定版本
  • centos镜像:https://www.centos.org/download/

1.4 Linux的应用

  • 网络服务器---WWW, FTP, Mail等
  • 关键任务的应用---金融大数据库,大型企业网管环境
  • 学术机构
  • 桌面计算机
  • 手机系统
  • 嵌入式系统

2.1用户的基本操作

  • linux区分大小写
  • 添加一个用户: useradd (管理员)
    • 用法: useradd 用户名,如:useradd MrFlySand
  • 设置用户的登入密码:passwd(管理员)
    • 用法:passwd 用户名,如:passwd MrFlySand,设置用户MrFlySand的密码
    • 注意:管理员可以随便设置密码,而普通用户必须遵守规则。
  • 查看当前登入的用户: whoami
  • 切换用户: su
    • 用法1: su 用户名,如:su MrFlySand
    • 用法2: su回车(切换到root,root就是管理员)
    • 特点: 管理员切换普通用户不需要密码,普通用户之间切换需要密码,普通用户切换到管理员需要密码。
  • 管理员登入(#),普通用户登入($)

2.2 Shell快捷键

  • Ctrl+a:调到命令行的开头
  • Ctrlt+e:调到命令行的末尾
  • Ctrlt+u:将光标处到命令行开头的内容清除
  • Ctrlt+k:将光标处到命令行结尾的内容清除
  • Ctrl+r:在历史记录列表中搜索某一命令
  • Ctrl+L:清屏
  • history //显示历 史命令,使用:history+回车
    ![nunber] //直接执行曾今执行过的命令上/下箭头,使用:!1

2.3 查看文件和目录

  • 查看当前所在的路径: pwd
  • 查看当前路径下的文件: ls。命令格式:命令-选项- 参数(目录)
    • 举例ls -d -hls -dhh查看当前目录下的目录信息和文件大小
    • ls -l查看当前文件夹下的所有文件和文件夹的属性信息
      • D:只看当前目录的信息
      • L:看详细信息
      • A:显示所有任何一个文件前面加上 “.”,表示隐藏文件
      • H:显示文件大小

2.6文件处理

  • 创建文件:touch file1.txt创建一个名为file1.txt的文件
    • touch file1.txt file2.txt file3.txt同时创建3个文件
  • 删除文件rm file1
    • rm -f file1 file2 file3(5)-f表示强制删除
    • rm /folder/*删除folder文件夹下的所有文件
    • rm -fr /folder/.*删除folder文件夹下的隐藏文件
  • 创建目录mkdir dir
    • mkdir -p par1/par2/dir(6)递归式的创建目录,分别创建3个文件夹par1、par2、dir。
    • mkdir dir/folder在dir文件下创建folder文件夹
  • 重命名
    • 重命名文件夹mv folder filesfolder文件夹重命名为files
    • 重命名文件mv file1.txt file11.txtfile1.txt文件重命名为file11.txt
  • 删除目录rm -r dir1(2)
    • rm -rf dir1 dir2 dir3(5)
    • rm -fr /tmp/*删除tmp文件夹下的所有文件。
    • rm -fr /folder/.*删除文件夹folder下的隐藏文件。
  • 复制文件cp file1 file2再创建一个名称为file2的文件,内容和file1文件一样。
    • cp filel file2 file3 dor(5)
  • 移动文件vm file1 file2(1)
    • vm file file2 file3 dir(4)
  • 复制目录cp -r dir newDir(2)-r表示把dir文件夹下的所有目录文件,都放入到newDir文件夹中。
    • cp -r dir1 dir2 dir3 dir4(4)多个目录复制到一个目录下面,把文件夹dir1、dir2、dir3下的所有文件都放入dir4文件夹中。
  • 移动目录mv dir1 dir2(3)把目录dir1移动到目录dir2中。
    • mv dir1 dir2 dir3 dir4(4)把目录dir1、dir2、dir3都移到dir4目录中。
  • 显示所有(all)文件(包括隐藏文件)ls -a
  • 注意:
    • (1)结果为重命名。
    • (2)需要使用“递归”选项处理来源目录。
    • (3)如果dir2存在,则结果为移动。如果dir2不存在,则结果为重命名。
    • (4)最后一个参数必须是目录。
    • (5)请谨慎使用"force"选项,系统将不会提示您确认操作。
    • (6)使用“创建父级”选项时应小心;无法捕获键入错误。

2.10查看文件

  • 查看文件cat/ less/ more 查看文件
  • cat /etc/group查看etc下的所有组
  • nl显示的时候,顺便出现行号
  • tac从最后一行开始显示
  • head显示文件前10行
    • head -n设置行数
  • tail//显示文件尾10行
    • tail -n设置行数
  • wc显示文件的行数,数字,字节

查看文件-cat

  • cat -A整合命令-vET
  • cat -b列出行号,但是空白行不标志行号
  • cat -E将结尾的断行字符($) 显示出来
  • cat -n列出行号,空白行也会标志行号
  • cat -T将tab按键 以I显示
  • cat -v列出一些看不来的特殊字符

查看文件-nl

  • nl -ba无论是否有空行,都列出行号
  • nl -bt如果有空行, 则不列出行号(默认)
  • nl -nln行号在屏幕最左方
  • nl -nrn行号在屏幕最右方,前面不加0
  • nl -nrz行号在屏幕最右方,前面加0
  • nl -w缩进多少位

查看文件-less(一页一页翻动)

  • 空格:向下翻动一页
  • pagedown:向下翻动一页
  • pageup:向上翻动一页
  • n:重复前一个搜索
  • N:反方向重复前一个搜索
  • q:退出

查看文件

  • head,tail显示文件头或尾几行
    • head file.txt查看文件file
    • -n:指定显示几行。默认是10行
  • WC显示文件的行数,数字,字节
    • -c只显示字节
    • -w只显示字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
    • -l只显示行

路径切换

  • 路径的切换: cd
    • cd -返回到之前的目录
    • cd ../返回到上一级目录
    • cd ~:到用户所在的家目录
  • 绝对路径和相对路径

2.13Vim编译器

  • vi进入vi编译器,vi file.txt创建一个名为file的文本文件,并在里面编辑。
  • i键插入
  • esc退出
  • u撤销
  • x删除
  • v选择文本
  • y复制
  • yy复制当前行
  • dd删除光标所在行p粘贴

  • 先按esc,然后输入:w保存
  • 先按esc,然后输入:wq保存退出
  • 先按esc,然后输入:q!强退
  • gedit进入图形化界面来进行编辑(需要x-windows的支持)

2.16软链接和硬链接

Inode编号
文件名:给人看的
Inode编号:给机器看的
硬链接:多个文件对应同一个inode编号
对多个文件中的某一个文件进行修改时,其他文件也会同时发生更改。多用户协同一致工作。

特点:

1、不能对目录进行硬链接的创建
2、只能对已经存在的文件进行硬链接的创建
3、删除一个硬链接文件,不影响其他相同的inode编号的文件

文件操作

  • 方法1创建硬链接link oldfile newfile创建一个新的文件newfile指向旧的文件oldfile,无论删除哪个文件,另一个文件都可以被打开。
  • 方法2创建硬链接ln oldfile newfilew
  • 创建软连接ln -s oldfile newfile

2.18关机

关机的指令

  • 数据同步写入磁盘,对数据进行保存sync
  • reboot重启,halt关闭系统,poweroff阻断电源
  • shutdown -r now立刻重启
  • shutdown -r +30 'the system will reboot'告诉用户电脑要重启,30分钟以后将重启
  • shutdown -k now 'this system will reboot'现在立刻给用户发送提示信息,但没有任何操作。发出一个报警信息。

服务等级

  • init0 //关机
  • init6 //重启
  • init3 //纯文本模式
  • init5 //含有图形接口

Shutdown

  • t添加秒数,几秒后关机
    • shutdown 12:00定时在12点关机
    • shutdown -t 2020秒后关机
    • shutdown -h now立刻关机
    • shutdown-h +10十分钟后关机
  • k不是真关机,而是发出告警信息
  • r在系统服务都停止后,重启
  • h在系统服务都停止后,关机
  • f关闭并且开机以后,强行略过磁盘检查(
    坏道的时候可以使用)
  • F重启后,强制进行进行磁盘检查
  • c或Ctrl+c取消已经在进行的shutdown指令内容

要注意的事项:

  • 观察系统的使用状态
    • 通知在线使用者关机的时间
    • 正确的关机指令使用

2.19帮助命令

man帮助命令

  • 命令格式:man 数字 任何命令,如man 1 passwd
  • 1 用户命令(可执行命令和shell程序)
  • 2 系统调用(从用户空间调用为内核例程)
  • 3 库函数(由程序库提供)
  • 4 特殊文件(如设备文件)
  • 5 文件格式(用于许多配置文件和结构)
  • 6 游戏(过去的有趣程序章节)
  • 7 惯例、标准和其他(协议、文件系统)
  • 8 系统管理和特权命令(维护任务)
  • 9 Linux内核API(内核调用)

导航命令man page

  • 空格键:向前(向下)滚动一个屏幕
  • PageDown:向前(向下)滚动一个屏幕
  • PageUp:向后(向上)滚动一个屏幕
  • 向下箭头键:向前(向下)滚动一行
  • 向上箭头键:向后(向上)滚动一行
  • d:向前(向下)滚动半个屏幕
  • u:向后(向上)滚动半个屏幕
  • /string:在man page 中向前(向下)搜索string
  • n:在man pago中重复之前的向前(向下)搜索
  • N:在man page中重复之前的向后(向上)搜索
  • g:转到man page的开头
  • G:转到 man page 的末尾
  • q:退出man,并返回到命令shell 提示符

综合练习

1、创建一个用户为你的英文名字,密码为lewis, 并且登入

su mrflysand
passwd lewis

2、查看并且确认当前用户是你的英文名字whoami
3、在/tmp.目录下创建文件夹你的英文名字1 (lewis1) ,你的英文名字2 (lewis2) ,你的英文名字3 (lewis3)

cd tmp
mkdir lewis1 lewis2 lewis3

4、查看自己创建的目录ls
5、在目录lewis1下创建目录lewis11mkdir lewis1/lewis11(注意要先创建lewis1文件夹)
6、使用cd -在/tmp和/lewis11目录之间来回切换

cd lewis11
cd /tmp
cd -

7、在/tmp目录下,创建一个文件lewis

cd /tmp/
touch lewis
ls

8、在/tmp目录 下,创建一个目录叫name

cd /tmp/
mkdir name

9、把创建的文件移入到name的目录中mv lewis name/
10、重命名name中的文件为beisi.liu

cd name/
mv lewis beisi.liu

11、复制这个文件,并且命名为lewis.liucp beisi.liu lewis.liu
12、删除name目 录下,两个文件rm -f beisi.liu lewis.liu
15、取消关机操作,并且告诉用户说“i don't want shutdown”shutdown -k now "i don't want shutdown"
16、查看/etc/passwd文件的后10行tail /etc/passwd
17、列出/etc/passwd文件前几行wc /etc/passwd

3.1Linux文件的权限:

  • 第一个属性用 d 表示。d 在 Linux 中代表该文件是一个目录文件。
  • 在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。

文件的属性:

  • d:表示目录
  • -:表示文件
  • l:连接文件
  • b:设备文件,提供存储的接口设备
  • C:设备文件,提供串行的接口设备--键盘,鼠标
  • 权限-连接-所有者-所属组-容量(默认单位B)-修改的日期-文件名

文件的权限:所有者,所属组,其他人

  • rwx,读、写、执行,没有权限就是-
  • 第一个组rwx:文件所有者的权限
  • 第二个组rwx:文件所属组的权限
  • 第三个组rwx:文件其他人的权限

接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号-而已。

  • chgrp 711 file.txt修改file文件的属性,数字第一位是属主权限,数字第二位是属组权限,数字第三位是其它权限

默认权限-umask

  • umask:查看当前用户的umask权限;- S选项
  • 0022---拿走的权限
    • 第一个数字表示特殊权限
    • 022=rwxr-xr-x
  • 默认创建文件和目录的权限,文件会拿走X权限
  • 临时的修改: umask 0000
  • 永久修改: /etc/bashre (不建议)

3.3修改文件权限

  • chown:修改文件的拥有者,前提是要有该拥有者
    • 格式:chown 拥有者 文件/目录
    • chown flysand folder1修改文件夹folder1的拥有者是flysand
    • -R递归修改
  • chgrp:修改文件所属组,前提是要有该组
    • -R递归修改
  • chmod:修改拥有者和所属组的权限(没有设置的属性用-表示)
    • 加减法:u/g/o(拥有者/所属组/其他) +/-/= r/w/x
    • chmod g+rw file.txt给文件所属组添加rw权限
    • chmod o-w file.txt给文件其他用户减少w权限
    • chmod o=rwx file.txt给文件其他用户设置rwx权限
    • 数字法:r=4,w=2,x=1三位 两位 一位
    • chmod 761 file.txt给file文件拥有者rwx、所属组rw、其他用户设置x权限,r+w+x=7、r+w=6、x=1
  • 如上图,在mrflysand用户下即使只允许读文件,但是可以强制修改文件。但在flysand用户下就不能强制修改文件,因为对于文件来说,flysand属于其他用户。

普通用户无法创建文件

3.7默认权限-umask

  • umask:查看当前用户的umask权限; -S选项
  • 0022---拿走的权限
    • 第一个数字表示特殊权限
    • 022=rwxr-xr-x
  • 默认创建文件和目录的权限,文件会拿走X权限
  • 临时的修改: umask 0000
  • 永久修改: /etc/bashre (不建议)

  • umask -S查看当前文件夹的属性

  • 假设你的umask为003,请问该umask情况下,建立的文件和目录的权限分别为多少?
    答: umask为003,所以拿掉的权限为------wx,因此:
    文件: (-rW-rw-rw-) - (-----wx) = -rw-rw-r--
    目录: (drwxrwxrwx) - (d-----wx) = drwxrwxr--

  • 普通用户0002,root用户0022

  • 在什么情况下,要使用umask
    答:假设你和的同事在同一个目录下进行同一个项目的工作。如果使用默认权限022,那么你创建的文件,你的同事将无法编辑。因此我们可以将权限调整为002。

3.9Linux中的特殊权限

  • 文件的特殊权限-SUID SGID SBIT
  • 当s出现在拥有者的x权限位置时候,表示拥有者有SUID的权限(Set UID)当s出现在所属组的x权限位置时候,表示所属组有SGID的权限(SetGID)当t出现在其他人的x权限位置时候,表示其他人有SBIT的权限(Sticky Bit )
  • SUID,临时获取文件拥有者的权限一只能针对文件
  • SGID,即使可以作用于目录,也可以作用于文件
    • 作用于文件: SUID一样
    • 作用于目录:继承父集目录一目录会不停的继承
  • SBIT(-t)指的是,只有文件的拥有者,才能删除,修改该目录下的文件一只能针对目录,只能在其他人的位置上进行修改,如下图:
  • S和T都有大写和小写之分
    • 大写说明:没有x权限
    • 小写说明:有x权限
  • SUID=4 SGID=2 SBIT=1
  • 如下图,我们给floder1文件夹加s权限,folder1子文件夹也会有s权限
  • 如下图,我们拿走文件夹folder1的x权限,此时folder1的权限从s权限变成S权限(字母大小写发生变化)
  • 如下图,减去s权限
  • 如下图,利用数字修改SUID=4 SGID=2 SBIT=1权限,这些数字位于数字开头

3.11Linux用户账户管理

  • 账户和组名:人看的
  • UID和GID: Linux看的
  • id:查看当前登入用户的UID和GID
  • 当我们使用ls -l的时候, 系统会根据/etc/passwd和/etc/group文件的内容,找到UID和GID对应的名称,进行显示
  • 如果随意修改了/etc/passwd下的用户的UID会发生什么情况?
  • /etc/passwd:记录了Linux上所有的账号
  • /etc/shadow: 记录了账户对应的密码
  • /etc/group: 记录了所有的组
  • 输入vim /ect/passwd,效果如下图
  1. Lewis:用户名
  2. X:早期这个部分放的是用户登入密码,现在密码放入了/etc/shadow中了
  3. UID:0表示系统管理员,1-999保留给系统使用的ID,1000以上给一般使用者
  4. GID: 0表示系统管理员,1-999保留给系统使用的ID, 1000以上给一般使用者
  5. mrflysand: 使用者信息说明
  6. /home/mrflysand: 用户家目录,用登入时,所在的目录
  7. /bin/bash: 用户在登入的时候,是否可以使用shell,如果不能使用shell,则会显示/sbin/nologin

  • 进入root用户,输入vin /etc/passwd修改用户mrflysand的UID的值为1050。原本的folder1文件夹的UID的默认值为1000,在没有找到UID为1000所对应的用户名,所以就会直接显示UID的值。
  • 当我们把文件夹folder1的UID改回1000时就会显示对应的用户名。步骤:输入vim /etc/passwd-按【I按】-修改下图中的UID的值为1000-按【eac】键-再按【:】键-输入wq!退出
  • 改回1000之后,就会显示1000所对应的用户名。该文件所对应的拥有者就会变成mrflysand

  • vim /etc/group查看group

    1、Lewis:组名
    2、X:组密码,一般不需要
    3、1000: GID
    4、附属组,倘若0后面还有值表示后面的属于前面的Lewis组
    以上这些文件不建议直接进行修改,建议使用命令进行修改。

3.13添加用户useradd

  • useradd是添加一个用户,最后的名称是新的用户,前面是这个用户的属性。在创建这个用户的同时,也会创建这些属性。
  • ``
  • ls /home/查看所有用户

3.13.1 Linux用户创建useradd

  • vim /etc/passwd查看所有用户,所有用户在最底部显示。
  • useradd
  • -U:设置UID
  • -g:设置主要组
  • -G:设置要附属组
  • -c: 设置用户说明
  • -d: 指定用户家目录
  • -s:指定用户shell
  • -e:账号失效日期,格式为: YYYY-MM-DD
  • -f:指定密码是否失效,0表示立刻失效,1表示永不失效

3.13.2 Linux用户修改

  • usermod修改已经创建好的账户
  • usermod可以对用户账户的信息进行细微的修改
  • usermod -c:账号说明,命令格式useradd -c 说明 用户名如命令useradd -c 飞沙 flysand4修改用户flysand4的账号说明为飞沙
  • usermod -d:修改家目录
  • usermod -g:修改主要组
  • usermod -G:修改附属组
  • usermod -a:与-G:一起用,增加附属组
  • usermod -l:修改用户名
  • usermod -u:修改UID
  • usermod -L:冻结账号
  • usermod -U:解冻

3.14 Linux中添加用户passwd

  • passwd用户名//所有人都可以通过该命令来修改自己的密码
  • 使用格式:passwd -参数 用户名,如:passwd -l mrflysand
  • -l: 锁住该账号,在/etc/shadow中放密码的位置加个!
  • -u:解锁
  • -S:显示账号的密码参数
  • -n:接天数,设置多久可以不修改密码
  • -x:接天数,设置多久内必须修改密码
  • -w:接天数,设置密码过期前警告天数
  • -i:接天数,设置密码失效天数

3.14.1 Linux用户创建chage

  • chage可以修改和密码有关的时间参数

  • -l:查看一个账户和密码有关的时间参数

  • -d:YYYY-MM-DD,修改最近一次更改密码的时间

  • -E: YYYY-MM-DD, 修改账号的失效时间

  • -m:天数,设置密码至少保留几天

  • -M:天数,设置密码多久后,需要更新

  • -W:天数,设置密码过期前警告时间

3.15 Linux中添加用户-练习

  • 举例1:创建一个账号test01,初始密码为123,用户登入后必须修改密码,然后强制使用新的密码登入

  • chage- d 0 test01-d中特殊的用法,0表示用户登录后必须修改密码

  • 举例2:修改root账号最近一次改密码的时间为2000年1月1号,必须要求root账号在100天后必须修改密码。

  • chage -d 2000-1-1 M 100 root

3.16 删除用户usredel

  • 要彻底的删除一个账号,比较麻烦
  1. 通过userdel test01可以删除/etc/passwd/etc/shadow/etc/group/etc/gshadow文件中的内容。
userdel test01 #删除用户test01
ls /home/ #查看home下的用户
tail /etc/passwd #查看/etc/passwd末尾几行
tail /etc/shadow
tail /etc/gshadow
tail /etc/spool/mail
  1. 手动删除
rm -fr /home/test01 #删除
rm -fr /var/spool/mail/test01

ls /home/ #查看home下是否有test01
ls /var/spool/mail/

  • -r表示连同家目录和邮箱一起删除。再创建一个test01的用户,用userdel -r test01删除,最后查看test01是否存在。

3.17 Linux中用户权限

3.17.1文件权限getfacI和setfacl

  • acl:针对单一使用者,设置单一文件或目录来进行rwx的权限修改
  • getfacl:获取单一使用者,针对单一文件或目录的权限
  • setfacl:配置单一使用者,对单一文件或目录的权限
    - -m配置ad参数
    • -x删除单个文件的acl
    • -b删除acI的配置
    • -R递归配置ac参数

3.17.1.1 setfacI用法

  1. setfac -m u:用户名:rwx 文件或者目录
    • setfac -m u:flysand1:rwx file3:针对用户flysand1给文件file3一个rwx的权限。文件file3的属性从-rw-r--r--.变为-rw-rwxr--+,后面从减号变成加号,说明管理员针对这个文件增加了acl

getfacl fileName查看文件属性,如getfacl file3查看file3的文件属性

  1. setfacl -mg:组名:rwx 文件或者目录

    • setfacl -m g:flysand1:rwx file3又生成一个flysand1这个组,这个组具有rwx权限。
  2. setfacl -m m::rwx修改mask值

3.17.1.2 getfacl文件名

  • mask的定义————权限上限
    1、权限的集合(特点用户,特定组,所属组的并集)
    2、如果mask中没有的权限,即使getfacl设定了,也不会有

3.17.2文件权限-getfacl和setfacl(未完成)

3.17.1文件权限getfacl和setfacl

  • acl:针对单一使用者,设置单一文件或目录来进行rwx的权限修改
  • getfacl:获取单一使用者,针对单一文件或目录的权限
  • setfacl:配置单一使用者,对单一文件或目录的权限-m配置ad参数
    • x删除单个文件的ac
    • -b删除acI的配置
    • -R递归配置ac参数

4.1Linux中的进程

  • 进程:已经启动的可执行程序的运行实力
    1、PID:进程的ID(每一个新进程都有一个唯一的PID)
    2、PPID:父进程的ID
    3、任何一个进程都可以创建一个子进程
    4、在redhat 7以上,所有进程的父进程: systemd
    在redhat 5, 6中,所有进程的父进程: init

4.1.1进程命令

  • ps用于显示当前进程状态常用选项。如下图有3个进程,其中一个是ps进程。

  • ps -aux:列出所有进程

  • ps -ef:列出所有进程
  • ps -l:列出和当前用户有关的进程
  • ps -u用户:查看某一用户的进程状态
  • top可以查看实时的进程状态

4.1.2 进程命令

4.1.2.1 进程优先级

1、<高优先级
2、n低优先级
3、s包含子进程
4、+位于后台的进程组

4.1.2.2 ps-aux参数解释

1、%CPU:占用的CPU使用率
2、%MEM:占用的记忆体使用率
3、VSZ:占用的虚拟记忆体大小
4、RSS: 占用的记忆体大小
5、TTY:终端的次要装置号码(minordevicenumberofty)
6、STAT: 该行程的状态
7、START: 行程开始时间
8、TIME: 执行的时间
9、COMMAND:所执行的指令

4.3 linux中的会话和作业

  • 进程: Linux自身运行的独立的程序
    • 交互进程:由一个shell启 动的进程,可以再前台运行,也可以在后台运行批处理进程:是一个进程序列,和终端没有联系
    • 监控进程(守护进程) : Linux系统启动时,启动的进程,并且在后台运行
  • 作业:一个正在执行的进程,而且作业可以包含一 个或多个进程。
    • 作业控制:控制正在运行的进程的行为。如:挂起一个进程,等一会在执行。这样用户就可以再多个作业之间切换。
  • &:在命令后面使用该符号,可以让命令在后台执行
  • jobs:可以查看正在后台运行的作业
  • sleep 10000 延迟几秒
    • ctrl+c:中断
    • ctrl+z:挂起
    • 案例: date ; sleep 5 ; date,打印现在的时间,等待5秒,再打印现在的时间。
    • 输入sleep 60表示直接在前台运行,再按ctrl+z表示挂起,等一会再去执行。
  • jobs:查看当前后台的作业状态
    • jobs -l:除了列出作业号外,同时列出PID
    • jobs -r:列出仅仅在后台运行的作业
    • jobs -s:列出仅仅在后台暂停的作业

4.4 linux中的会话和作业

  • fg: 将后台的命令调到前台来继续执行,不能放回后台了%作业编号
  • bg: 将后台暂停的命令继续执行%作业编号
  • ps -j:显示当前作业进程信息
    • TGID: 线程组ID号
    • SID: 会话ID号

4.4.1 Linux中断进程

  • 信号:传递给Linux进程的操作
    • kill -l显示可以传递给Linux进程的所有信号
  • 常用:
    • kill -9 PID杀死一个进程(强制)

    • kill -15 PID正常的方式终止一个进程

    • kill -2可以control+c的操作是一样的

4.5 linux服务控制

4.5.1控制服务和守护进程

  • systemd:是所有进程的父进程( Linux内核3.0以上版本)
  • systemctl:用户管理各种类型的systemd对象,这些对象称为:单元
    • 常用的单元: .service(服务单元), .socket(套接字),.path(路径单元)
  • ssh是一个协议,sshd是一个进程

  • systemctl status sshd.service显示sshd的服务状态,显示中有几个关键字————红帽7,如下图:
    • loaded:单元配置文件以处理,正在运行的文件
    • active ( running) :正在运行
    • active (exited) :配置成功
    • active (waiting) :运行中,但正在等待事件
    • inactive:不在运行
    • enable:开机自启动
    • disabled:开机不自启
    • static:无法启动,但可以通过某一个已经启动的单元来启动

4.5.2 控制服务和守护进程

  • start:在系统中启动一项服务,如:systemctl status sshd
  • stop:等待程序需处理完毕后再stop
  • restart:直接关闭程序在开启,如:systemctl restart sshd
  • reload:重新加载配置文件,进程暂停,然后把配置文件加载进去后,继续执行后续操作。进程的PID不会发生改变
  • enable:设置开机自启,如:systemctl enable sshd
  • disable:关闭开机自启
  • status:查看某一单元的状态

  • 红帽5,6
    • Service sshd status
    • Chkconfig ssh on/off开机自动启动

4.6 Linux中的日志

4.6.1 分析和存储日志

  • 日志:用于系统审核和故障排除--Liunx中的“黑匣子”
  • 日志文件都是保存在/var/log/目录中的,一般这些日志都只会保存30天,否则Linux的日志文件会越来越大。ls /var/log/查看日志,如下图:

  • 在RedHat 7中,系统日志消息由两个服务负责处理。他们是systemd-journaldrsyslogd
    /var/log/messages // 大多数系统日志消息记录的日志
    /var/log/secure//安全和身份验证的消息和错误日志,
    /var/log/maillog//与邮件服务器相关的日志
    /var/log/cron//与定期执行任务相关的日志文件
    /var/log/boot/log//记录和系统启动有关的日志

4.6.2 系统日志优先级

  • 许多程序使用syslog协议将事件记录到系统。每一个日志都会根据消息类型和严重性分类,如下是系统日志优先级概述表
编码 优先级 严重性
0 emerg 系统不可用
1 alert 必须立即采取措施
2 crit 严重状况
3 err 非严重错误状况
4 warning 警告状况
5 notice 正常但重要的事件
6 info 信息性事件
7 debug 调试级别消息

4.6.3 日志分析

  • 大多数日志由四个部分组成,如下图
    1、记录在日志的时间
    2、发送该日志的主机,localhost表示我自己
    3、发送该日志消息的程序或进程,systemd所有进程的父进程
    4、发送的实际消息

  • 日志监控
    tail -f /xar/log/secure tail表示显示最后10行,如果有新的内容加入,那么会继续输出,如下图就是显示的后10行,且可以输入

4.7 打包

  • 打包程序: tar
    • C:创建文档;
    • t:列出存档内容;
    • x:提取存档;
    • f filename:要操作的存档的文件名;
    • v:详细信息

注意:

1、选项前不用加-
2、创建之前请检查有木有重名文件(覆盖且不提示)
3、要使tar可以打包选定的文件,执行tar命令的用户必须要能够读取这些文件

4.8 压缩

  • tar支持三种不同压缩方式:
    gzip:压缩速度最快,历史最久,应用最广泛;
    bzip2:压缩成的存档文件小,可用性不如gzip;
    xz :最新的方式,提供最佳的压缩率。

  • 实际环境中3种情况都可能遇到,所以要创建不一样格式的归档文件就有自己的选项。(后缀名在Linux中并没有作用,而是给管理员看)
    z用于gzip压缩: filename.tar.gz
    j用于bzip2压缩:filename.tar.bz2
    J用于xz压缩:filename.tar.xz

  • 如下图,
    tar cf a.tar /etc/创建a.tar压缩文件
    tar cf a /etc/创建a压缩文件
    ls -lh显示压缩文件的大小

    格式:tar 压缩方式 压缩后的名称 被压缩的文件,如tar zcf a.tar.gz a.tar

  • 如下图tar后面的是jJ,它们的压缩方式是不一样的,压缩比例也不一样。

  • 如下图,我们先用rm a.tar删除文件--解压缩文件tar xf a.tar.bz2,解压出来的文件就是a.tar

4.9计划作业

周期性计划作业--cron

cron:是一个进程。可以让linux周期性的执行某一命令。

  • crontab是一个命令,可以设置linux周期性的执行某一命令。
    • -u:设置某一个用户的周期性工作-root权限;
    • -e:编辑crontab的工作内容
    • -l:查阅crontab的工作内容
    • -r:移除所有的crontab的工作内容,若仅要移除一项,请用-e去编辑

4.9.1 crontab的格式讲解

一行代表一个任务
minute hour day month week command

  • minute:表示分钟,可以是从0到59之间的任何整数。
  • hour:表示小时,可以是从0到23之间的任何整数。
  • day: 表示日期,可以是从1到31之间的任何整数。
  • month:表示月份,可以是从1到12之间的任何整数。
  • week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期白
  • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

4.9.2 crontab的格式讲解

  • *(星号):代表任何时刻都接受的意思*代表的是任何时候
  • ,逗号:代表分隔字段的意思
    例如: 15,30,45****command代表的是每月每日每小时的15分,30分,45分的时候执行命令
  • -(减号)代表一段时间范围内
    例如:107-10***command代表的是每月每日的7点到10点的10分整时执行命令
  • /n那个n代表数字,也就是每隔n单位间隔的意思
    例如/5****command代表的是每月每日每时每个5分钟执行一次
命令 含义
/1****command 每1分钟执行一次
15,30,45**** command 每小时的第15,30,45分钟执行
10,50 7-10***command 7 点到10点的第10,50分钟执行
20,407-11*/1**command 每隔一天的7点到11点的第20和第40分钟执行
25,507-11**1 command 每周一的7点到11点的第25和第50分钟执行
303*** command 每天的3:30执行
30 3 1,10,20** command 每月1、10、20日的3:30执行
30 3**6,7command 每周六、周日的3:30执行
/159-16***command 每天9点到16点之间每隔15分钟执行

输入vim /etc/crontab进入界面

  • /bin/bashlinux操作界面
  • PATH:达到周期性的计划时间点,可以执行的命令范围,范围包括根目录下的/sbinbin/usr/sbinusr/bin
  • MAILTO:发送一封mail给谁,如图1下方是发送一封mail给root用户。

图1

当任何一个人修改了它的周期性后,系统就会发送一封mail给root用户。如果不想发送mail可以把下方删除,如图2。

图2

crontab配置原理

  • 当使用者使用crontab这个命令来创建工作排程之后,该项工作就会被纪录到/xar/spool/cron/里面去了,而且是以帐号来作为判别的

在root用户下输入vim /var/spool/cron/lewis会看到* */10 * * * go to sleep

  • 如: lewis用户使用crontab后,他的工作会被纪录到/yar/spool/cron/lewis中。另外,cron运行的每一项工作都会被纪录到/var/log/cron这个日志文件中
  • crond服务每分钟检测一次,所以cron会每分钟去读取一次/etc/crontab/var/spool/cron里面的数据内容,因此,只要你编辑完/etc/crontab这个文件,并且将他储存之后,那么cron的配置就自动的会来运行了。
  • 如果你修改完的crontab或者添加的crontab没有马上的执行起来,那么你可以用systemctl restart crond.service重启。

4.12输入输出重定向

  • > file标准输出重定向到文件——覆盖。如图通过前后2次内容的对比,可以发现后面的内容会覆盖前面的内容。

  • >>file标准输出重定向到文件——追加,在文件的后面添加新的内容。如下图会把新的内容添加到文档中。

  • 2>标准错误重定向到文件——覆盖。如下图

    • 输入abc会显示出错
    • 我们把出错的提示写入abc.txt中
    • 用cat abc.txt可查看文件中的内容
  • 2>>标准错误重定向到文件——追加

  • 2>/dev/null标准错误重定向到回收站,将错误扔到回收站中

  • &>file标准输出和标准错误重定向到文件——覆盖。如下图会将日期把前面的错误信息覆盖。

  • >>file 2>&1标准输出和标准错误重定向到文件——追加。如下图错误提示和时间才会追加到abc.txt中。

举例

  • [root @localhost tmp]# date > abc
  • [root @localhost tmp]# date>> abc
  • [root @localhost tmp]# cat /etc/ passwd> abc
  • [root @loca lhost tmp]# 1234 2> abc
  • [root@localhost tmp]# 12342> /dev/null
  • [root @localhost tmp]# 1234 >> abc 2>&1

配合计划任务

在root用户下输入crontab -e
在窗口中输入*/1 * * * * date>> /tmp/file每隔一分钟,任意小时,任意天,任意的星期几,执行任意的星期几,并把他追加到/tmp/file,并保存退出。
在窗口中输入systemctl restart crond.service执行命令
如下图在tmp下查看file中的数据

管道符

字符: |这就是管道符。

作用有两个:
1、承上启下:把上一个指令的输出作为下一个指令的输入来执行。
2、搭配grep字符实现过滤功能。
[root@localhost tmp]# ls -l /etc/

[root@localhost tmp]# ls -l /etc/ | more


[root@ localhost tmp]# ps -aux显示如下

[root@ localhost tmp]# ps -aux| grep cron通过grep实现过滤


[root@localhost tmp]# ps -aux | grep cron > abc将cron中的内容覆盖到abc.txt中

4.14Linux中的通配符

正则表达式和通配符

在linux中,有通配符和正则表达式,这是两个不同的概念

通配符:它是由shell解析,并且一般用于匹配文件名。如: ls

正则表达式:是一个字符匹配标准,可以匹配文本中的内容

一些命令工具按此标准实现字符匹配,常用于支持正则表达式的工具,如grep, sed等。一般用 于匹配文件中的内容

常用的通配符

  • *:匹配任意多个字符,如rm -rf *就是删除所有文件。如下图显示p开头的所有文件,pam表示文件夹,下方是里面的文件

  • ?:匹配任意一个字符,如ls pass??可以匹配到passwd

  • [...]:匹配中括号内出现的任意一个字符,如ls pass[abc]可以匹配到passwdapasswdbpasswdc

  • [!...]:不匹配中括号内出现的任意一个字符

4.15正则表达式

4.15.1字符匹配

  • .:匹配任意单个字符,如下图在文件中显示符合c.t的字符,catcbt都符合条件

  • *:匹配其前面一个字符出现任意次

  • ?:匹配其前面的字符1次或0次

  • +:匹配其前面一个字符出现至少一次(在扩展正则表达式中)

4.15.2位置匹配

  • ^:锚定行首
  • $:锚定行尾
  • \<\b: 锚定词首,其后面的任意字符必须作为单词首部出现
  • \>\b: 锚定词尾,其前面的任意字符必须作为单词尾部出现* \B:非单词的开头或结尾
  • ^$:空白行
  • \:通常用于打开或关闭后续字符的特殊含义

4.15.3分组()

  • (ab)*:匹配ab这个分组出现任意次
  • \1:引用第一个左括号以及与之对应的右括号所包括的所有内容,同理还有\2\3

4.15.4特殊子字符类:

  • [[:alnum:]]:任何字母和数字
  • [[:alpha;]]:任何字母
  • [[:cntrl:]]:控制字符,在ASI表中对应八进制000到037,和177 ('DEL).
  • [[:digit:]]: 任何数字
  • [[:graph:]]: 匹配打印字符,相当于[['T:alnum:]]' +'T:punct:]]".
  • [[:lower:]]: 小写字母
  • [[:print:]]: 可打印字符,相当于[['T:alnum:]], [['T:punt:]],和space.
  • [[:punst:]]:标点符号,'!"#$%&'() * +.-/;<=> ?@[[\]]^_ . '{|}~'
  • [[:space:]]:空白字符,tab, newline, vertical tab, form feed, carriage return, and space.,
  • [[:upper:]]:大写字母

匹配以大写字母A开头且第2个字符也是大写的单词

匹配第1、2个字符都大写的单词

  • [[:xdiget:]]:任何16进制的数字,相当于[0-9a-fA-F]

4.16查找和替换

查找和替换举例

  • 删除文件中第m至n行的内容sed 'm,nd' file删除/tmp/file,如sed '2,5d' file删除/tmp/file文件中第2至5行的内容

  • 在第m行后面添加mrflysand这一行sed 'ma mrflysand file,如在第2行后面添加mrflysand这一行sed '2a mrflysand file

  • 在文件的最后一行前面添加mrflysand,sed '$i mrflysand' file

  • 将文件中的dog全部替换成cat,sed 's/cat/dog/' file

  • 注意:如上操作只会对显示进行修改,不会对原文件修改。如果要对原文件进行修改,使用-i选项(慎用)sed -i 's/cat/dog/' file

文件查找和替换

  • man grep只能用于查找文件中的内容
  • man sed可以查找,然后替换或者插入想要的内容
    • a:新增,a的后面可以接字串,而这些字串会在新的一行出现(目 前的下一行);d:删除,因为是删除啊,所以d后面通常不接任何东西的;
    • i: 插入,i的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);p:列印,亦即将某个选择的资料印出。通常p会与参数sed
    • S:取代,可以直接进行取代的工作

4.17查找语句find

需求:找出/var目录下查找大于5M的文件,并且他们拷贝到/tmp/lewisfile目录中。

  1. tmp目录下创建lewisfile文件夹markdir lewisfile
  2. find /var -size +5M -exec cp -ar {} /tmp/lewisfile/ \;-exec command{}\;``查找指定的文件并执行指定的命令(可见下方“用法-参数”);cp是复制;-a是文件属性;-r`是目录。
  3. ls /tmp/lewisfile查看文件

用法: find [路径] [命令参数] [表达式]

  • 参数:
    • -name:“文件名”:查找指定名称文件;
    • -user用户名:查找指定用户拥有的文件;
    • -group组名: 查找指定组拥有的文件;
    • -mtime n:查找在N天前被修改过的文件;
    • -atime n:查找在N天前被访问过的文件;
    • -type d/f/b//p:查找指定类型的文件;
    • -empty: 查找为空的文件;
    • -size: 按容量大小查找;
    • -perm mode:查找指定属性的文件;
    • -exec command{}\;:查找指定的文件并执行指定的命令;
    • -newer文件名:查找比指定文件新的文件

查找语句find-举例

  • 目录/var下查找所有3天内被修改过的文件find /var -mtime -3
  • 目录/var下查找所有3天前被修改过的文件find /var -mtime +3
  • /var目录下查找大于5M的文件find /var -size +5
  • /var目录下查找小于2M的文件的详细信息find /var/ -size -2M -exec ls -l {} \;如图1;find /var/ -size -2M如图2,-exec ls -l {} \;表示详细信息

图1

图2

  • man find可以查看所有find的使用方法
posted @ 2022-01-02 19:50  MrFlySand-飞沙  阅读(453)  评论(0)    收藏  举报