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 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 files
folder文件夹重命名为files - 重命名文件
mv file1.txt file11.txt
file1.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
只显示行
路径切换
- 路径的切换:
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 20
20秒后关机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 sshd
stop
:等待程序需处理完毕后再stoprestart
:直接关闭程序在开启,如: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-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/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
后面的是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/bash
linux操作界面PATH
:达到周期性的计划时间点,可以执行的命令范围,范围包括根目录下的/sbin
、bin
、/usr/sbin
、usr/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]
可以匹配到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的使用方法