Linux教程(上)
个人公众号:「小知识酷」,在这里我会不定期分享一些日常思考、学习随笔、个人成长、笔记整理、健康小知识,欢迎关注(/≧▽≦)/
声明:文中出现的mrflysand或flysand都是用户名
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
- 用法: useradd 用户名,如:
- 设置用户的登入密码:passwd(管理员)
- 用法:passwd 用户名,如:
passwd MrFlySand,设置用户MrFlySand的密码 - 注意:管理员可以随便设置密码,而普通用户必须遵守规则。
- 用法:passwd 用户名,如:
- 查看当前登入的用户:
whoami - 切换用户: su
- 用法1: su 用户名,如:
su MrFlySand - 用法2:
su回车(切换到root,root就是管理员) - 特点: 管理员切换普通用户不需要密码,普通用户之间切换需要密码,普通用户切换到管理员需要密码。
- 用法1: su 用户名,如:
- 管理员登入(#),普通用户登入($)
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 -h或ls -dhh查看当前目录下的目录信息和文件大小 ls -l查看当前文件夹下的所有文件和文件夹的属性信息- D:只看当前目录的信息
- L:看详细信息
- A:显示所有任何一个文件前面加上 “.”,表示隐藏文件
- H:显示文件大小
- 举例:
2.6文件处理
- 创建文件:
touch file1.txt创建一个名为file1.txt的文件touch file1.txt file2.txt file3.txt同时创建3个文件
- 删除文件
rm file1rm -f file1 file2 file3(5)。-f表示强制删除rm /folder/*删除folder文件夹下的所有文件rm -fr /folder/.*删除folder文件夹下的隐藏文件
- 创建目录
mkdir dirmkdir -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整合命令-vETcat -b列出行号,但是空白行不标志行号cat -E将结尾的断行字符($) 显示出来cat -n列出行号,空白行也会标志行号cat -T将tab按键 以I显示cat -v列出一些看不来的特殊字符
查看文件-nl
nl -ba无论是否有空行,都列出行号nl -bt如果有空行, 则不列出行号(默认)nl -nln行号在屏幕最左方nl -nrn行号在屏幕最右方,前面不加0nl -nrz行号在屏幕最右方,前面加0nl -w缩进多少位
查看文件-less(一页一页翻动)
- 空格:向下翻动一页
- pagedown:向下翻动一页
- pageup:向上翻动一页
- n:重复前一个搜索
- N:反方向重复前一个搜索
- q:退出
查看文件
- head,tail显示文件头或尾几行
head file.txt查看文件file-n:指定显示几行。默认是10行
WC显示文件的行数,数字,字节-c只显示字节-w只显示字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。-l只显示行
路径切换
- 路径的切换:
cdcd -返回到之前的目录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,效果如下图

- Lewis:用户名
- X:早期这个部分放的是用户登入密码,现在密码放入了/etc/shadow中了
- UID:0表示系统管理员,1-999保留给系统使用的ID,1000以上给一般使用者
- GID: 0表示系统管理员,1-999保留给系统使用的ID, 1000以上给一般使用者
mrflysand: 使用者信息说明/home/mrflysand: 用户家目录,用登入时,所在的目录/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:修改UIDusermod -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
- 要彻底的删除一个账号,比较麻烦
- 通过
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
- 手动删除
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用法
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的文件属性

-
setfacl -mg:组名:rwx文件或者目录setfacl -m g:flysand1:rwx file3又生成一个flysand1这个组,这个组具有rwx权限。

-
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:除了列出作业号外,同时列出PIDjobs -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 sshdstop:等待程序需处理完毕后再stoprestart:直接关闭程序在开启,如:systemctl restart sshdreload:重新加载配置文件,进程暂停,然后把配置文件加载进去后,继续执行后续操作。进程的PID不会发生改变enable:设置开机自启,如:systemctl enable sshddisable:关闭开机自启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-journald和rsyslogd
/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/securetail表示显示最后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后面的是j和J,它们的压缩方式是不一样的,压缩比例也不一样。

-
如下图,我们先用
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:达到周期性的计划时间点,可以执行的命令范围,范围包括根目录下的/sbin、bin、/usr/sbin、usr/binMAILTO:发送一封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]可以匹配到passwda、passwdb、passwdc -
[!...]:不匹配中括号内出现的任意一个字符
4.15正则表达式
4.15.1字符匹配
-
.:匹配任意单个字符,如下图在文件中显示符合c.t的字符,cat、cbt都符合条件

-
*:匹配其前面一个字符出现任意次 -
?:匹配其前面的字符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会与参数sedS:取代,可以直接进行取代的工作
4.17查找语句find
需求:找出/var目录下查找大于5M的文件,并且他们拷贝到/tmp/lewisfile目录中。
- 在
tmp目录下创建lewisfile文件夹markdir lewisfile find /var -size +5M -exec cp -ar {} /tmp/lewisfile/ \;,-exec command{}\;``查找指定的文件并执行指定的命令(可见下方“用法-参数”);cp是复制;-a是文件属性;-r`是目录。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的使用方法

浙公网安备 33010602011771号