ctrl shift = 放大终端窗口的字体显示
ctrl - 缩小终端窗口的字体显示
【注:dos没有空格也能执行,不区分大小写;
但是Linux必须得有空格,且严格区分大小写。】
linux里的图形界面叫做gnome
bash进程代表整个字符界面,shell
init 6 和 reboot 重启计算机
通用选项
-v 把操作过程显示出来
-f force强制
-n 不提示
-R 是递归的意思
命令 选项 参数
上下键,快速调出历史执行过的命令,退出选择CTRL+C
tab键,自动补齐
连续按两下tab,出现可能输入的字符
零、常见命令
证书:RHCA、RHCE、RHCSA红帽认证架构师、工程师、管理员
服务器:塔式、机架式(用的多)、刀片式服务器。
云计算工程师需要维护这个服务器。保障服务、业务平稳的运行。
通过一台服务器部署一个自己的系统。
/boot启动分区:内存
swap 交换分区:内存不够用的交换分区
/ 根分区:相当于C盘
/撇
\捺
bin binary二进制文件,存放命令,普通用户的
boot 启动目录,跟计算机启动有关系的文件
dev device设备驱动,硬件,摸得着的东西
etc 配置文件也叫控制台文件(工作当中用的最多的文件),etc里的文件就是控制按钮
home 装用户自己的文件,普通文件的家目录
root 除了root其他账号进不去
run 运行目录,临时的,一会就清掉了
sbin 也是放命令的,管理员能用的特权命令
tmp 临时目录
usr 放应用程序
var 放临时的日志啊,邮件啊,啥的
shutdown -h now 现在就关机
cd Change dictionary 切换文件夹
cd .. 返回上级文件
cd 什么也不加返回当前文件夹
cd / 返回根目录 Windows用 cd \
touch 文件名 创建一个空文件
touch b.txt 创建了一个名为b的空文件
touch abc.sh
mkdir 目录名 Make directory创建空目录 Windows是md
rm 文件名 remove删除文件 Windows用dl删除文件
rm -r 目录名 删除目录
echo 内容 > 名字.txt echo aaaa > a.txt 快速创建一个文件
cat 文件名.txt cat a.txt 查看文件内容
命令名 --help 查看帮助,如:ls --help,提示怎么用ls
(简化版帮助信息)
man 命令名 查看命令的详细帮助
f或者空格翻页,enter滚动一行, b上翻一页,q退出
(内核带的,全是英文)
pwd print work dirctory查看当前所在目录
一、ansible
1、服务器巡检
ansible all -m shell -a ‘df -h’
all 代表所有主机,也可以指定
-m 后面指定要调用的模块,shell是shell模块,Linux的大部分命令都在里面
-a 后面跟上动作
二、文件和目录命令
ls
ls【目录名】 list 查看当前文件夹内容 与dos的dir相似
ls后面没有目录名,代表显示当前目录内容
ls后面有目录名,代表显示指定目录内容
【显示当前目录内容 ls
ls ./
显示当前目录的子目录内容 ls abc
ls ./abc】
ls -a 显示指定目录下所有子目录与文件,包括隐藏文件
ls -l 、 ll 以列表方式显示文件的详细信息
ls -hl 配合 -l 以人性化的方式显示文件大小
ls -al 显示所有文件的详细信息
ls -ahl 人性化的方式显示所有文件的详细信息
ls -l -d 目录名 看这个目录的权限等详细信息
【ls-l返回结果说明】
正在上传…重新上传取消
说明 | |
文件类型 | d:目录,-:文件,l:链接文件 |
文件存取控制 | 参见“文件存取说明” |
硬链接数 | 文件被硬链接的次数,快捷方式 |
文件属主 | 文件所属用户 |
文件所属的组 | 文件所属的组 |
文件大小 | 文件大小,默认单位为:字节 |
文件修改时间 | 文件修改时间 |
文件或目录名 | ./:代表当前目录,../:代表上一级目录,.文件名:代表隐藏文件 |
文件类型:
正在上传…重新上传取消
“文件存取说明”
目录 | 拥有者权限 | 组权限 | 其他用户权限 | ||||||
- | r | w | - | r | w | - | r | - | - |
d | r | w | x | r | w | x | r | - | x |
r:代表可读,w:代表可写,x:代表可执行,-:代表没有这个权限
【ls结合通配符的使用】
通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件
通配符 | 含义 |
* | 代表文件夹中任意个数字符 |
? | 代表文件名中任意一个字符 |
[acd] | 匹配a、c、d中的任意一个,[]代表范围集合 |
[a-f] | 匹配a到f范围内的任意一个字符 |
[a,b]* | a或b开头,任意结尾 |
[a,b]? | a或b开头,任意一个结尾 |
*[a-f]* | 只要有a到f就行 |
?? | 只查看有两个字符的 |
chmod
chmod u+r 文件目录名 chmod 777 a.txt
change mode 的合写,修改用户或组对于文件或目录的权限
chmod u+r a.txt 给文件所有者给予可读权
chmod u-r a.txt 给文件所有者去掉可读权
chmod a+rwx a.txt 给所有用户添加所有权限
chmod o=r a.txt 只保留r,wx去掉
命令 对象加减权限 文件或目录
如果要对文件夹里的所有内容授权,得加一个-R
用户权限
权限对象:
属主:u
属组:g
其他人:o
特殊对象:a(u+g+o)
权限的类型:
读:r=4
写:w=2
执行:x=1 文件如果要跑起来必须给执行权
【数字法修改】chmod 777 a.txt 授予所有用户所有权限
拥有者(u=user文件所属用户) | 组(g=group文件所属的组) | 其他(o=other其他用户) | ||||||
r | w | x | r | w | x | r | w | x |
4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
a=all所有用户。
用+、-(加、减)。+赋权、-去权。=后面有的就会赋权,没有的就会去权。
常见数字权限组合
777 u+rwx,g+rwx,o+rwx
755 u+rwx,g+rx-w,o+rx-w
644 u+rw-x,g+r-wx,o+r-wx
000 全都去掉
111 全都只保留x
666 全都只保留rw
chown
修改文件属主和数组:chown 用户名.组名 文件或目录
只改文件属主:chown 用户名 文件或目录
只改文件属组:chown .组名 文件或目录
更改目录所属用户和用户组
chown [选项] 用户 [:用户组] file
chown -R inspuradmin:inspuradmin /data/tools/redis
chgrp
chgrp 组名 文件或目录 -R是递归的意思,该文件的属组
ACL
access control list
限制用户对文件的访问,是UGO的补充。加强版。
可设置不同用户、不同的基本权限,对象数量不同。
UGO设置基本权限只能一个用户一个组和其他人。
setfacl set file acl 设置文件
-m 设置
u:user01:rwx u用户,g组,o其他人:权限
文件
setfacl -m u:user01:rwx /file.txt
setfacl -m o::rwx /home/file.txt
正在上传…重新上传取消正在上传…重新上传取消
多了个+:代表除了基本权限还有附加权限。
正在上传…重新上传取消正在上传…重新上传取消
setfacl -x u:user01 /home/file.txt 删除用户user01针对这个文件的所有acl权限
setfacl -b /home/file.txt 删除这个文件的所有acl权限
-d是把权限改为最开始默认的权限。
getfacl
查看文件有哪些ACL权限。
getfacl /homr/file.txt
watch
watch -n1 ‘ls -l’ /home/file.txt 每隔一秒去执行命令,观察结果
三个小问题:
- 如果一个文件很重要,万一被超管删除了怎么办,靠特殊的i权限。
- t权限,特别的位置。
- 为什么创建文件是644?目录是755,系统有默认权限设计。
suid
针对文件所设置的特殊权限,使调用文件的用户,临时具备属主的能力。
chmod u+s 文件或usr/bin/cat(命令) 给文件或命令赋suid权限,若有x权限,为小s
chattr
有很多属性。
长用于锁定某个文件,拒绝修改。
i immutable,当给文件赋予这个权限的时候,不能更改重命名或删除这个文件。
chattr +i 文件名 有了i属性,谁都无法删除这个文件。
chattr -i 文件名
lsattr
列出文件属性的命令,会将文件的特别位展示
umask
影响新创建文件的默认权限。直接使用,可查看当前用户的umask权限。
正在上传…重新上传取消正在上传…重新上传取消
umask 000 修改umask的值(临时)
cd
cd 切换目录
命令 | 含义 | |
cd 目录名 | 进入指定目录 | |
cd | 切换到当前用户的主目录(/home/用户目录),用户登陆的时候,默认的目录就是用户的主目录。 | 回自己的家 |
cd ~ | 切换到当前用户的主目录(/home/用户目录) | |
cd .. | 切换到上级目录 | |
cd / | 切换到根目录(绝对路径)cd ../.. 返回上级目录的上级目录(相对路径) | |
cd - | 回到切换前的目录 |
cd abc 进入当前目录下的子目录abc
cd /abc 进入根目录下的abc目录
cd 回到用户的主目录
cd ../.. 返回上级目录的上级目录
相对路径与绝对路径
Linux所有的目录和文件名大小写敏感
以 . 开头的文件或目录为 隐藏文件或隐藏目录
./ 代表当前目录
../ 代表上一级目录
/代表根目录
a.txt
./a.text 当前目录下的a.txt
../a.txt 上一级目录下的a.txt
.a.txt 文件名就叫.a.txt ,而且是个隐藏文件
绝对路径 总是从 【根目录】 开始
相对路径 总是从 【当前目录】 开始
touch
touch 路径/文件名
文件不存在,创建空白文件;
文件已经存在,可修改文件的末次修改日期;
如果要更改一个目录的最后修改时间,touch后面的目录名一定要存在
touch 已存在路径/文件名 创建一个空文件
touch b.txt 创建了一个名为b的空文件
文件和目录不能同名
mkdir
mkdir 创建目录 ,路径和目录名
mkdir -p 快速创建层级目录
mkdir -p aaa/bbb/ccc 创建一个有嵌套关系的多级目录,aaa下有bbb,bbb下有ccc
mkdir /home/{dir111,dir222} 在home下创建多个目录,大括号可以嵌套
mkdir -v 路径/目录 把操作过程显示出来,操作过程可视化
rm
rm 文件名 remove删除文件 Windows用dl删除文件
rm -r 目录名 删除目录,删除后不能恢复,不存在时会报错,可一下删除好几个目录
rm -f 强制删除文件,不提示错误 删除后不能恢复
rm -r * 删除当前文件夹下所有文件
千万不要在根目录下rm -rf* 整个系统都会被删除
rm -f a.txt b.txt 存在就删除,不存在就不报错
rm -rf aaa 存在就删除,不存在就不报错
rm -rf 强制删除 删除/*时不包含隐藏文件
四、文件内容命令
cat
cat [选项] 路径/文件名 查看文件内容 一次显示所有
可以结合重定向合并文件
cat -n 对输出的 所有行 编号
cat -b 对输出的 非空行 编号 与nl效果等价
cat a.txt 查看a.txt内容
cd /proc proc目录下面放了一些和系统信息相关文件
cat version 查看linux版本
cat cpuinfo 查看cpu信息(Linux下很多文件都没有扩展名)
cat meminfo 查看内存信息,全部显示
head
head -3 a.txt 只看文件的头三行
tail
tail -200f a.txt 看后200行
more
more 文件名 一屏显示不全时,分屏查看文件内容
enter向下滚一行
按f、空格向下翻一页
b回看一页
q退出
在/proc目录下显示meminfo
more meminfo
三、拷贝和移动命令
tree
tree [目录名] 以树状图列出文件目录结构
tree -d [目录名] 只显示目录 需要安装
cp
cp [选项] 源文件路径/源文件 目标文件路径/目标文件 复制给出的文件或目录
相当于DOS下的copy命令
cp 只能拷贝文件
cp -r 拷贝目录(文件夹)
cp -i 当目标文件已经存在,给出用户是否覆盖的提示,覆盖文件内的内容
可用.作为复制到的指定目录
touch a.txt
mkdir abc
cp a.txt abc/a.txt 将当前目录下的a.txt拷贝到abc目录下,名字还叫a.txt
rm a.txt 删除当前目录下的a.txt
cp abc/a.txt a.txt 将abc目录下的a.txt拷贝到当前目录下,名字还叫a.txt
mkdir aaa
cd aaa
cp ../abc/a.txt a.txt 将abc目录下的a.txt拷贝到当前目录aaa下,名字还叫a.txt
mv
mv [选项] 源文件 目标文件 移动
使用mv命令来移动文件或目录,也可以给文件或目录重命名
mv -i 若目标文件存在,在覆盖目标文件之前将给出提示,要求用户确认
mv b.txt aaa/b.txt 将b.txt文件移动到目录aaa中
mv aaa/b.txt b.txt 移动回来
mv b.txt c.txt 将b.txt改名为c.txt【同级目录下就是改名】
mv和cp参数基本一致
mv和cp的区别是,cp之后,原文件还存在;mv之后,原文件不存在了
grep 找内容
grep [选项]“字符串”文件名 在指定文件中查找指定的内容
grep 关键字 文档名 查看该文档中包含该关键字的行
grep “s” meminfo 在meminfo文件中查找是否有字符s的行
没有显示代表找不到
、两个单词间有空格,需要用引号
-n 显示行号
-v 查找不包含指定内容的行
-i 忽略大小写
grep -n “s” meminfo
grep -ni “s” meminfo
grep “^d” 查找以d开头的行,查找目录
grep “^-” 查找以-开头的行,查找文件
模式查找
^ab 找行首为ab的
ab$ 找行尾为ab的
grep -n ^ab 123.txt
echo
echo 字符串 回显 把echo后的内容回显到屏幕
echo aaa 显示aaa
clear
clear 清屏 类似于dos下的cls
正在上传…重新上传取消正在上传…重新上传取消
正在上传…重新上传取消正在上传…重新上传取消
正在上传…重新上传取消
正在上传…重新上传取消正在上传…重新上传取消
标准输入、标准输出,错误输出
相当于软连接,进程通过序号(文件描述符)来打开文件,0-255
012代表输入输出,4代表文件
> >>
重定向符号 输出重定向
命令 参数 > 文件名
在Linux中允许把命令执行结果(输出在终端上的内容),重定向输出到一个文件中
命令 > 文件名 文件存在直接覆盖文件,不存在就新建
命令结果不在屏幕上显示,而是重定向到指定文件里
把左边的东西漏斗到右边
- 正确输出重定向 >等价于1>
- 错误输出重定向
&> 标准混合输出
加一个&可以把正确输出和错误输出都重定向到文件中
ls /home /aaaaaa &> /dev/null 标准混合输出,输出丢进垃圾桶里
yum install httpd &> /dev/null
<<EOF
内容
EOF 段落标记,取消其间的回车的作用
cat 看内容
> /file.txt 输出重定向
<<EOF 内容 EOF 输入重定向,cat看这里的内容,再把它写进file里
命令 >> 文件名 文件存在就追加新内容,不存在就新建;不会覆盖
echo aaa > a.txt 把echo命令的执行结果放到a.txt里
ls -l > a.txt 把ls -l执行结果放到a.txt里
grep “a” a.txt > b.txt 把查询结果放到b.txt中
echo aaa > a.txt
echo bbb >> a.txt a.txt文件内容最终为aaa
bbb
|
管道符号 把一个命令的输出作为另一个命令的输入
命令1 | 命令2 组合多条命令
ls -al > a.txt 把结果放到文件里
grep “ab” a.txt 在文件里查找
【ls -al | grep “ab”】 不需要a.txt,结果里查找ab
ls -al > a.txt 结果放到文件中
more a.txt 分屏查看结果
【ls -al | more】 分屏查看输出结果
【ls -al | grep “a” | more】
【ls -al | grep “^d”】 只显示以d开头的行,即只显示目录
【ls -al | grep “^-”】 只显示以-开头的行,即只显示文件
【ls -al | grep “^d.*s$”】 只显示以s结尾的目录
|tee管道
正在上传…重新上传取消正在上传…重新上传取消
cat /home/file.txt |tee file2.txt | tail -1 会把前面的处理结果存到文件里,文件里有很多行
|Xargs
cp和rm这两条命令只能手打,不服其他程序
ls /homg > file.txt
cat file.txt |Xargs rm -rvf 能成功删除home下的文件,file.txt里的内容还有
gedit
gedit 1.txt 图形编辑器,Linux里的记事本编辑
- 关机、重启
shutdown
shutdown 选项 时间
shutdown -r now 立刻重新启动操作系统,不加now就是重新启动
shutdown 一分钟之后关闭电脑
shutdown 20:25 八点25关机
shutdown +10 十分钟之后关机
shutdown -c 取消之前的关机计划
sudo shutdown -r now 用高级用户的权限,远程控制其他用户的系统,立刻重启
所以务必要记得更改自己电脑的密码
不要关机,记得重启,加-r
cat结合重定向实现合并文件内容
cat 文件1 文件2 文件3 > 文件4
echo aaaa > a.txt
echo bbb > b.txt
cat a.txt b.txt 显示两个文件内容aaaa
bbb
cat a.txt b.txt > c.txt 将a.txt和b.txt内容合并到c.txt里面
find找文件
find [路径] -name 文件名 查找当前目录的所有子目录,查找指定文件
find /etc -name ‘77777.txt’ 引号不打也可以,怕内容带系统关键字
单引是强引,双引号是弱引,有些东西引不掉
命令 路径 选项 描述 动作
find . -perm 777 -ls
-iname 忽略大小写
-size 按文件大小找 +5M找大于5M的,-5M找小于5M的
-maxdepth 数字 最大深度
-a 并且
-user 属主
-group 属组
-type 按文件类型,linux中不以后缀做区分
以文件类型f文件,d目录,l链接,b块设备
-perm 644 按权限。
动作:
-delete 删除
-ls 看
-ok cp -rvf {} /temp \;
注:如果省略路径,默认为当前目录
find命令可以与通配符结合使用
find ./ -name a.txt 从当前目录开始查找所有子目录,是否存在a.txt文件
find / -name a.txt 从根目录开始查找所有子目录,是否存在a.txt文件
which=whereis:查找命令
which cat 找cat命令在哪,绝对路径
whereis cat 找cat命令在哪,绝对路径
locate:文件查找,依赖数据库
updatedb 刷新数据库
locate 文件名 就可以找到了
alias 重命名命令
alias xulei=’ls --color=auto’
alias shuijiao=’init 0’
ln
ln -s 被链接的源文件 链接文件,ls代表创建一个软连接,symbo link 软链接
文件和目录都可以做软链接
记录的只是源文件的绝对路径
失去源文件不可用
指向另外一个文件类似windows的快捷方式
ln 创建硬链接文件,硬链接只能在一个分区做,只能对文件做,不能对目录做。
ln -s a.txt a 新建一个a,并且内容和a.txt一样
ls >> a.txt 更改a.txt内容
cat a 显示a的内容,a的内容也会发生变化
ls -l 可以看到a前面不是d也不是-,而是l,link的意思,代表这是一个软链接文件
ln a.txt b 硬链接,b和a.txt的内容一样,更改其一就都会发生变化
a.txt的硬连接数在原来为1的基础上+1
b的开头为-
硬链接文件大小和原来文件一样,而软链接不占磁盘空间,大小不变;
rm a.txt 删掉源文件,,,,软链接也没了,硬连接文件还可以使用
RAID(了解)
Redundant Array of Independent Disks 廉价磁盘冗余阵列
分为数据盘,校验盘,热备盘(啥也不写就搁那)
做到数据安全,备份策略,也能加速读取。容错,提高读写速率。
RAID02块盘以上,读写速度快,100%*N,但不容错。一般镜像卷做RAID0。
RAID1镜像卷、镜像集;两块磁盘;容量50%,只能用一半;
RAID5带奇偶校验条带集;至少三块硬盘;N为磁盘数量,会将数据分为N-1份,存校验; 利用率(n-1)/n
硬RAID和软RAID
软RAID示例:
创建RAID:
yum -y install madadm
mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd(d,e,g)
-C创建RAID 第一个RAID设备 RAID5 RAID成员数量 热备磁盘的数量
mkfs.ext4 /dev/md0
mkdir /mnt/raid5
mount /dev/md0 /mnt/raid5
cp -rf /etc /mnt/raid5/etc1
mdadm -D /dev/md0 查看详细信息
mdadm /dev/md0 -f /dev/sdb -r /dev/adb 模拟整坏sdb,热盘会马上顶上
一个目录去掉执行(X)的权限,就是啥都不能干了
r
- 对于文件来说,没有r权限,文件就是不可读的
- 对于目录来讲,没有r权限,就不能用ls查看目录内容了
w
- 对于文件,没有w,文件内容只读
- 对于目录,没有w,不可以在这个目录下创建新的文件
x
- 对于文件,如果这个文件是个可执行的程序,没有x,就不能执行了
- 对于目录,没有x,不能用cd进入这个目录
Linux下的所有的普通用户,主目录在/home
用户a
/home/a
gzip
gzip 文件名 压缩文件 压缩文件的文件名后缀为gz,源文件自动删除
gzip -d 文件名 解压文件 解压完,压缩文件自动删除,比较常用
zip
zip 压缩文件.zip 源文件 压缩文件
zip [-r] 压缩文件.zip 原目录 压缩目录
unzip 压缩文件.zip 解压文件
注:用zip压缩文件,必须明确指定压缩后目标文件名
压缩后源文件依然存在,解压后压缩文件也存在
gzip a.txt
gzip -d a.txt.zp
zip a.zip z.txt
unzip a.zip
tar
tar 将多个文件或目录打包成一个文件
tar -cvf 包名.tar 文件或目录 打包
tar -tvf 包名.tar 查看打包文件内容
tar -xvf 包名.tar 解包
tar常用选项
c 生成档案文件,创建打包文件create
x 解开档案文件
v 列出归档解档的详细过程version
f 指定档案文件名称file,f后面一定是.tar文件,所以必须放选项最后
t 查看包中的内容
z 压缩工具,名字-gzip.tar.gz,名字不一样,大小更小了
j 压缩工具,名字.tar.bz 比他们都小
J 压缩工具,名字.tar.xz 比他们都小,时间越来越长
-xf 解压什么都能搞定
tar -xvf mingzi.tar.bz -C /temp -C 路径,解压到别的地方
tar -cvf abc.tar abc 打包目录,源目录依然存在
rm -r abc 删除原目录
tar -tvf abc.tar 查看打包文件的内容,不解
tar -xvf abc.tar 还原打包的目录
abc.tar.gz 打包后的压缩文件,先解压缩在解包
tar结合z参数实现打包同时压缩,或解包同时解压缩
tar -zcvf 压缩包名.tar.gz 文件目录 打包同时用gzip压缩
tar -zxvf 压缩包名.tar.gz 用gzip解压后同时解包
df
df 查看磁盘剩余空间,disk free
df -h 以人性化的方式显示剩余磁盘大小
存储管理
DISK 磁盘:存储文件和目录
在Linux中,管理存储设备和资源。
IDE并口:/dev/hda 很少见了,很老了
SATA串口:/dev/sda dev设备文件目录,s代表sata,d代表disk磁盘,a代表第一块
/dev/sdb b代表第二块
分区方式:
正在上传…重新上传取消正在上传…重新上传取消
正在上传…重新上传取消
管理磁盘的三部曲:分区、格式化、挂载mount
毛坯房:隔间、放家具、加个门(目录)
基本磁盘管理办法 | LVM管理磁盘 |
1、分区(建房子) | 1、物理卷、卷组、逻辑卷 |
2、格式化(分屋子) | 2、格式化 |
3、挂载(开门) | 3、挂载 |
1、查看磁盘
ll /dev/sd* 查看磁盘,文件类型为b(block)(块)
lsblk 列出块状设备,查看分区结果
2、创建分区
扩展分区不存放数据,如果想存放数据必须划分逻辑分区。
使用MBR划分分区,只能有以下情况:
4个主分区
3主+1个扩展(N个逻辑分区),扩展分区不能挂载,逻辑分区可以
fdisk /dev/sdb 启动分区工具,能分区的是新的未分区的盘,进入会话模式
n 开始分区
p 先划主分区,扩展分区按e
- 选择分区号
+1G 分给1分区大小
w 保存更改,自动退出分区工具
partprob /dev/sdb partation prob刷新分区表,分区准备
fdisk - l /dev/sdb 查看分区结果,或者ll /dev/sd*,或者lsblk
- 创建文件系统
mkfs.ext4 /dev/sdb1 make,file,system,extend4创建文件系统扩展
第二块串口硬盘的的第一个分区准备格式化了
- 挂载mount
mkdir /mnt/disk1 创建挂载点,一个分区一个挂载点
mount -t ext4 /dev/sdb1 /mnt/disk1 挂载,-t文件系统类型,咋存东西的
把谁挂载到哪里去
df -hT 查看挂载信息,文件挂的哪个磁盘
交换分区管理Swap
就是一个平台分区,“提升”内存容量,防止OOM(Out Of Memory)
存放热点数据,不能人为干预。windows里叫虚拟内存。
推荐16G以下的设置为内存的两倍。以上的就一般大就行。
正在上传…重新上传取消正在上传…重新上传取消
free -m 查看当前交换分区
+2G
之后按t
- 将其置为Linux swap分区
swapoff /dev/sde1 可以取消为交换分区
umount /dev/sde 可以取消挂载
取消挂载后在挂载,里面东西也会恢复,就相当于U盘拔掉又插上了。
正在上传…重新上传取消正在上传…重新上传取消
正在上传…重新上传取消正在上传…重新上传取消
正在上传…重新上传取消
正在上传…重新上传取消正在上传…重新上传取消
抄写文件
dd if=/dev/zero of=/mnt/disk4/1.txt bs=1M count=1000
抄文件 从 抄到 大小 抄多少次
逻辑卷LVM
管理磁盘的一种方式,性质与基本磁盘没有区别,可随意扩张大小
PV 物理卷(Physical volume)
VG 卷组(Volume group)
LV 逻辑卷(Logical volume)
- 准备物理磁盘
- 将物理磁盘转换为物理卷
pvcreate /dev/sdc
- 创建卷组
vgcreate vg1 /dev/sdc vg1自己起
- 创建逻辑卷,-L大小,-n卷名,vg1组名(磁盘里拿空间,自己取名字,必须从卷组里)
lvcreate -L 200M -n lv2 vg1
- 创建文件系统并挂载
mkfs.ext4 /dev/vg1/lv1
- 创建挂载点
mkdir /mnt/lv1
- 挂载
mount /dev/vga/lv1 /mnt/lv1
扩容
- 扩大卷组
创建PV pvcreate /dev/sdd1
扩展VG vgextend vg1 /dev/sdd1
- LV扩容
vgs 查看卷组空间
lvextend -L +200M /dev/vg1/lv2 增加200M空间给lv2
df -hT 查看文件系统当前容量
resize2fs /dev/vg1/lv2 创建文件系统df -hT可看见空间变大了
文件系统
正在上传…重新上传取消正在上传…重新上传取消
文件系统ext4
block块,一块默认4k,存储文件的实际数据(超市储物柜)
文件较大会占用多个block,不一定连续,会有碎片
inode,记录文件的属性,大小,权限,属主,块的数量和编号。128bytes(小票)
superblock超级块
ll -i 查看文件的inode信息,分区越大号越大,位数越长
df -i 查看inode数量
ls -l |wc -l 查看有多少个文件减一,还有一行total
ps
ps 查看进程 windows中用任务管理器
ps -a 显示终端上的所有进程,包括其他用户的进程
ps -u 显示进程的详细状态
ps -x 显示没有控制终端的进程,(后台进程)
ps -aux 显示系统中所有的进程,并且显示所有进程的详细信息,是刹那的信息
可以直接写ps aux
ps -aux | head -3 就可以看到字段名
正在上传…重新上传取消正在上传…重新上传取消
正在上传…重新上传取消
ps -aux --sort %cpu 按照cpu降序排序
ps -ef 可查看父亲进程的PID,杀不死这个程序可以杀他的父亲
pps -axo 要显示的字段 自定义显示字段-o选项opretion
ps -ef | grep 进程关键字
free
free -m 查看内存情况,单位是可以是m,g,k,查看当前交换分区
top
top 动态显示进程的运行状态
按q退出
重点关注字段
PID | 进程id号 |
USER | 运行进程的用户 |
%CPU | 进程CPU占有率 |
%MEM | 进程内存占有率 |
%COMMAND | 启动进程的命令名 |
PR | 系统给的优先级 |
NI | 手工设置的优先级 |
上半部分:
正在上传…重新上传取消正在上传…重新上传取消
正在上传…重新上传取消正在上传…重新上传取消
正在上传…重新上传取消正在上传…重新上传取消
正在上传…重新上传取消正在上传…重新上传取消
正在上传…重新上传取消正在上传…重新上传取消系统自身一个空闲进程
正在上传…重新上传取消
第五行是假内存,交换分区(硬盘的一部分空间,存放常用数据)。
正在上传…重新上传取消正在上传…重新上传取消
top -t 1 1秒刷新一次数据
top -p 进程号 查看指定进程的动态信息
信号控制进程:
kill -1 PID 重新加载配置文件,并不是重启
kill -9 PID 杀死一个程序,15号正常关闭。
正在上传…重新上传取消正在上传…重新上传取消
kill
kill 杀死进程
kill [选项] PID
kill -9 PID 当用PID杀不掉,用-9参数强制杀死进程,-9参数会显示“已杀死”
图形界面下,启动了gedit程序,用kill杀掉
ps aux | grep ‘gedit’
kill gedit的PID
nice
进程优先级
系统中两种优先级:NI和PR,nice值(-20~19)需要再加20才能进入系统的优先级队列。
ps axo pid,command,nice --sort=-nice
启动程序时设置优先级,
会默认继承他父亲的nice值,默认为0
sleep 7000 控制台睡眠7000秒,倒计时程序
会占领前台,加&把他丢入后台
nice -n -5 sleep 7000 & 设置程序的优先级为-5
设置已存在程序的优先级:
renice -20 进程ID 将旧的进程设置新的优先级
前后台
正在上传…重新上传取消正在上传…重新上传取消
sleep 3000 会占领前台,ctrl+C结束,ctrl+Z暂停
sleep 3000 & 丢进后台
ps aux |grep sleep 可以看见
jobs
专门看后台的工作,哪个是最新的会带上+,哪个稍老会带上-
【序号】 使用kill %序号来杀死
fg
fg 序号 调后台程序到前台
bg
bg 序号 放回后台运行
proc 虚拟文件目录
虚拟文件系统:采集服务器自身内核、进程运行的状态信息,数字随进程的出现而出现
cpu :/proc/cpuinfo 使用cat 查看
内存:/proc/maminfo
内核:/proc/cmdline 内核程序,一个应用软件,Linux的内核
六、查看或配置网卡信息
ping 检查网络是否连通
ping IP/域名 检查与目标主机网络是否连通,Linux需Ctrl+c终止,不然不停下来
IP地址也就是域名,IP地址是数字,域名是www.itcast.com
ping返回数据说明:
64 bytes from 220.181.38.150: icmp_seq=1 ttl=128 time=20.1ms
64 bytes from 220.181.38.150: icmp_seq=2 ttl=128 time=10.2ms
64 bytes from 220.181.38.150: icmp_seq=3 ttl=128 time=16.7ms
接收到来自220.181.38.150的64Bytes数据,用时xxms(毫秒)
通过IP地址找到计算机,在通过端口号找到计算机中运行的应用程序,才可以看到访问结果
常见的服务端口号,默认的端口号可以省略
序号 | 服务 | 默认端口号 |
01 | SSH服务器 | 22 |
02 | Web服务器 | 80 |
03 | HTTPS | 443 |
04 | FTP服务器 | 21 |
可以把电脑比作电话,网卡相当于SIM卡,IP地址相当于电话号码
ifconfig | grep inet 找到当前计算机的ip地址
127.0.0.1 本地回环地址
ping 127.0.0.1 查看本地网卡是否工作正常
查看windows的ip地址,cmd命令中端,输入ipconfig /all
ifconfig 显示Linux系统的网络设备信息,查看网卡信息,苹果本也是
正在上传…重新上传取消正在上传…重新上传取消
七、远程管理命令
ssh [-p port] user@remote
user是在远程机器上的用户名,如果不指定的话默认为当前用户
remote 是远程计算机的地址,可以是IP/域名,或者是后面会提到的别名
port 是SSH Server 监听的端口,如果不指定,就为默认值22,-p可以省略
ssh 用户名@ip 关机/重新启动
scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径 远程复制文件
使用exit退出当前用户的登录
ssh -p 22 python@172.16.140.138
然后敲yes
就可以远程控制Linux系统的python用户
ssh这个终端命令只能在Linux或者UNIX系统下使用
如果在Windows系统中,可以安装PuTTY或者XShell客户端软件即可
PuTTY 下载 http://www.chairk.greenend.org.uk/~sgtatham/.putty/latest.html
XShell 下载http://xshellcn.com
SSH非常常用的一个软件工具,SSH客户端远程登陆SSH服务器
数据传输是加密的,可以防止信息泄露
数据传输是压缩的,可以提高传输速度
使用Secure Shell 协议
SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议
scp secure copy 是一个在Linux下用来进行远程拷贝文件的命令
他的地址格式与ssh基本相同,需要注意的是,在指定端口时用的时大写的-P而不是小写的
scp -P port 01.py user@remote:Desktop/01.py
把当前目录下的01.py文件复制到远程家目录下的Desktop/01.py
scp -P port user@remote:Desktop/01.py 01.py
把远程家目录下的Desktop/01.py文件复制到当前目录下的01.py
scp -P 22 python@172.16.140.138:Desktop/01.py .
加上-r选项可以复制文件夹
scp -r demo user@remote:Desktop
scp -r user@remote:Desktop demo
第55集
root用户--------神一般的存在
通常用于系统的维护和管理,对操作系统的所有0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.
8+资777源具有所有访问权限,在大多数Linux都不推荐直接使用root账号登录系统,一般我们使用的是运维人员配置好的普通用户操作
/root root用户的主目录
su - 用户名 切换用户
su - root 等同于su - 切换到root用示让输入密码,输入时不会回显,回车
错误提示密码错误,不错就成功了,exit回车,退回su之前的用户
su root 等同于su 切换到root用户下,不改变当前所在的目录
有-更改当前目录,没有-不更改当前目录
root用户切换到其他用户不需要输入密码
正在上传…重新上传取消正在上传…重新上传取消
上面的root用户不在了,下面的root用户还在
root用户su完之后一定要用exit退出
useradd [选项] 用户名 添加新用户,root才有权限
useradd -d 目录名 指定新用户的主目录
useradd -m 如果-d参数中指定的主目录不存在,就自动创建这个目录
新建一个用户名字交abc,主目录是在/home/abc目录
习惯------用户的主目录在/home下,用户的主目录和用户名一致
find /bin abc 从根目录的bin目录下,找一个文件abc
useradd -d /home/abc abc -m 新增用户abc,主目录为/home/abc
注:可以在新增用户的同时指定用户默认的shell
如:useradd -d /home/abc -m -s /bin/bash
新增abc用户同时指定shell为bash
passwd [用户名] 修改用户密码
一般来说管理员才会进行用户密码的配置,root用户可以改其他用户的密码
普通用户直接使用passwd就可以修改自己的密码
passwd 更改root用户自己的密码
userdel [用户名] 删除用户,主目录还在,一般root账户才有权限
userdel -f 此选项强制删除用户账号,甚至用户仍然在登录状态。它也强制删除
userdel -r 用户主目录中的文件将随用户主目录一起删除
whoami 我是谁,查看当前用户登录名
八、文本编辑
vim是vi的升级版,会加亮
Vi是一个基于字符界面文本编辑程序
Vi没有菜单,只有命令,虽然很多,只需了解常用的即可
Vi有三种基本工作模式:命令模式,输入模式,末行模式
#后面的都是注释
用Vi新建一个文件abc.txt,在文件里写hello world,保存退出
第一步:用vi新建一个名为abc.txt的文件
Vi abc.txt (命令模式)
第二步:进入vi界面后,按i键 (输入模式)
Hello world
第三步:按ESC键 (命令模式)
第四步:按: (末行模式)
第五步:wq回车 (存盘退出)
完成
Vi三种模式的切换
正在上传…重新上传取消
首次进入vi进入命令模式
命令模式下输入i,进入输入模式
输入模式下ESC回到命令模式
命令模式下:进入末行模式
在末行模式下按ESC返回命令模式
不论在什么模式下按ESC总是回到命令模式
Vi 文件名 启动vi
如果文件名不存在,那么创建一个新文件
如果文件名存在,打开已有文件
Vi 开启一个没有文件名的
输入内容后,wq没有文件名,没办法保存
输入内容后,输入命令,w a.txt 回车,就写好了
VI的三重启动方式
Vi 新文件 创建一个新文件
Vi 已有文件 打开一个已经存在的文件
VI 退出VI的时候w后面要加一个文件名,代表保存文件
VI的退出方法
必须先回到末行模式下,命令行模式按:
wq 保存退出
q! 不保存退出
q 啥也不干,直接退出
修改文件后强行退关掉,vi打开后(它变成了隐藏文件)
一串提示。
用vi编辑一个文件,让这个文件可执行
vi a 里面输入 cat /proc/cpuinfo保存
chmod a+x a 所有用户都能执行它
./a 执行当前目录下的a
(直接执行a找不到,Linux不会在当前目录下查找可执行文件)
cd 回到用户主目录
ls -a .profile 修改Linux的配置文件,使其可以在当前目录下查找可执行文件
vi .profile 修改里面内容
末尾输入:后,打入export PATH=$PATH:.
后ESC:wq 保存退出
告诉Linux系统,在当前目录下也能执行这个命令
可以重启操作系统,或者退出shell,在进来一次
a 执行a不生效
source .profile 让我的修改立刻生效
a 直接执行a可生效
在shell环境(提示符为$)下输入启动vi命令,进入编辑器时,就处于命令模式下
任何时候,不管用户处于何种模式,只要按下ESC键,即可使vi进入命令模式
命令模式 | 命令 | 说明 |
从命令模式进入文本输入模式 | i | 光标位置插入 |
a | 光标位置追加 | |
I | 从光标所在行的行首插入 | |
A | 从行尾追加 | |
o | 从光标下面行开新行插入 | |
O | 从光标上面行开新行插入 | |
从命令模式进入末行模式 | : | 从命令模式进入末行模式 |
删除命令 | x | 删除光标前一个字符(光标所在字符) |
dd,有的版本一个d | 删除光标所在行 | |
ndd nd | 删除指定的行数(删除光标下面的n行) | |
撤销命令 | u | undo撤销 |
Ctrl+r | 反撤销 | |
复制粘贴命令 | yy,有的版本一个y | 复制当前行 |
nyy ny | 复制n行 | |
P | 在光标所在位置向下新开辟一行,粘贴 | |
查找命令 | /要查找的字符串 | 查找指定字符串 |
n | 查找下一个 | |
N | 查找上一个 | |
定位 | nG | 跳转到第n行 |
光标定位 | hjkl | 上下左右 |
0 $ | 行首行尾 | |
gg G | 页首页尾 | |
/ string(n N可以循环的) | 查找字符,按n键下一个 |
用vi合并a.txt与b.txt为c.txt
ls -l > a.txt
cat /proc/cpuinfo > b.txt
vi a.txt 打开a.txt
18 yy 复制a.txt共有的18行
:q 退出a.txt
vi c.txt 新建并打开c.txt
p 粘贴
:wq 保存并退出
vi b.txt 打开b.txt
19 yy 复制b.txt共有的19行
vi c.txt 打开c.txt
G 跳转到最后一行
p 粘贴
:wq 保存退出
末行命令
在命令模式下,用户按:即可进入末行模式下
末行模式时窗口的最后一行(通常也是屏幕的最后一行)显示一个:作为末行模式的提示符,等待用户输入命令
末行命令执行完后,vi自动回到命令模式
末行模式 | 命令 | 说明 |
保存 | w [文件名] w即可(vim版) | 如启动vi时未指定文件名,那么此处可以指定文件名,也可以为另存为文件 |
退出 | q | 如果文件未保存,回退出vi失败,同时提示错误 |
保存退出 | wq | 保存文件,同时退出vi |
不保存退出 | q! | 放弃修改,退出vi |
保存不退出 | w | 保存文件,不退出 |
显示行号 | :set nu | set number显示文件中内容每行的行号 |
显示控制字符 | :set list | 显示回车啥的 |
取消设置行号 | :set nonu | |
查找替换 | :开始行,结束行 s/原内容/新内容/全局 | 1,5 s/root/qianfeng/g s是switch 不加g只换每行的第一个 |
正在上传…重新上传取消正在上传…重新上传取消
可视化模式
从命令行模式按v进入可视化模式
v 一个字一个字选
V 一行一行选
- 临时文件
1、vim为正常关闭,产生的临时文件,解决办法。
当没有保存编写的文档时关闭终端。系统会自动产生一个备份文件。
vim 1.txt 没有保存 会产生.1.txt.swap隐藏文件
在打开的时候不让写,只需要把产生的swap文件给清理掉就好了
- 用户和组
- 用户和组的基本概念
用户组信息存储的文件:
用户基本信息文件:/etc/passwd(冒号分隔为7列字段,一行一个用户信息)
root:x:0:0:root:/root:bin/bash
用户名:x:uid:gid:描述:HOME:shell
用户名:登陆系统的名字
x:密码占位符,具体的内容不在这里
uid:用户的身份证号。
系统约定:RHEL7:
0是特权用户,1~499系统用户,1000开始是普通用户
IDC:Internet database center互联网数据中心,管理员给用户赋予权限从一千开始
gid:组号
描述:比如经理manager,描述一般我们不动
/root:家目录:登陆系统时,所在的目录
/bin/shell:登录shell命令解释器。
定义命令,接受命令,执行命令
bin/nologin不能登录
用户密码信息文件:etc/shadow
8列,密码是加密的,
- 用户名:
- 加密值:
- 最后一次修改时间:是距离Linux诞生的时间(1970.1.1),
- 最小间隔0:最小间隔是修改密码的修小间隔天数
- 最大时间间隔99999无限:
- 警告时间:改密码的软规则,快到期提前提示
- 不活动时间:用户不登陆不试用账号的有效时间
- 失效时间:时间到账号不能用了
- 保留
正在上传…重新上传取消正在上传…重新上传取消
加密的:私密性,完整性,不可否认性
对称性密码可以破解,非对称性密码不可以破解
正在上传…重新上传取消正在上传…重新上传取消
组信息文件:etc/group
组名:组密码:组ID:组成员
- 用户/组管理
用户:
只有root才可以使用下面三个命令
useradd 用户名 创建用户,可以grep etc/passwd文件,可以看home,
-u设置 UID
-d指明家目录
id 已创建的用户名 查询用户命令,显示ID和组ID
passwd 用户名 设置该用户名的密码,不跟用户名的时候谁敲改谁的
userdel 用户名 删除用户
-r 一块删除用户的目录
usermod -s /sbin/nologin 用户名 修改用户属性,不让他登录
s代表shell
-u代表uid
-g代表用户基本组,组 用户名
-G代表用户附加组,组 用户名
gpasswd -d 用户 组名 把用户从组里面移除
组:
基本组:随用户创建的组,组名同用户,显示在etc/passwd中。
附加组:一个用户可以同时属于多个组,除了自己的组,其他的就是附加组。
groupadd 组名 创建组etc/group能看到
groupadd 组名 -g 组ID 创建组并设置组ID
grep 组名 /etc/group 查看该组名的信息
groupdel 组名 删除组信息
- 提权(了解)
永久提权:Switching users with su
su - root 切换到root用户
exit 退出当前帐号
临时提权:Running commands as root with sudo
使用普通登录服务器时:完成部分特权命令
以root身份授权普通账户xulei
vim etc/sudoers
%wheel ALL=(ALL) NOPASSWD:ALL
允许wheel用户组中的用户再不输入该用户密码的情况下使用所有命令
useradd xulei -G wheel
sudo 命令 普通用户就可以使用特权命令了
十一、常用命令合集01-组内分享持续更新:
jar包启动命令
nohup java -jar *****.jar &
nginx启动
sbin目录下 ./nginx -s reload
war包linux解压两种方式
jar -xvf project.war
unzip -oq common.war -d common
zip打包及压缩命令
zip -r -q -o pack.zip mark/
unzip filename.zip
tar.gz打包及解压命令
tar zcvf FileName.tar.gz DirName
tar -zxvf filename.tar.gz
文件/文件夹移动
mv /opt/a /home/
文件/文件夹复制命令
cp /opt/a /home/
cp -r /opt/a/ /home/
端口找进程
netstat -anp|grep port
查看路径下存储
du -lh --max-depth=1
显示所有运行中的进程(按内存使用多少排序)
ps aux --sort -rss
linux服务器操作mysql数据库
登录mysql: ./bin/mysql -u root -p 回车输入密码
查看当前存在数据库 show databases;
进入数据库 use dsp_bsp;
查看数据表 show tables;
新建数据库 create database dsp_bsp;
删除数据库 drop database dsp_bsp;
查看数据表数据 select * from flyway_schema_history;
修改某个字段的值:update catalog_group set site_code="231000000000" where site_code="3701"; (第一个site_code字段后面值是更新后,第二个site_code字段后面值是原值)
通过在linux执行sql语句:
通过use 数据库; //进入数据库
source /opt/uc_menu.sql; //执行opt下放置的sql文件
1、Linux查看并杀死被占用的端口
安装lsof : sudo apt-get install lsof(sudo: apt-get:找不到命令)
查找对应的进程号 : sudo lsof -i:端口号
查找对应的进程号 : sudo kill -9 进程号
netstat -tlnp|grep 端口号
kill -9 进程号
3、root用户添加用户
useradd 新用户名字
4、连接本机redis服务
./redis-cli
5、部署elasticsearch,curl -X GET "127.0.0.1:9200",拒绝连接
检查防火墙状态:systemctl status firewalld,发现是开启的,需要关闭:systemctl stop firewalld,还是拒绝
检查httpd的配置文件:/etc/httpd/conf/httpd.conf 的80端口,是处于监听状态。。。还没解决。。
6、解压缩文件到指定路径
tar -zxvf 文件名.gz -C ../ 到上级目录,这里应该放的是相对路径吧
7、grep和find命令的区别
find是根据文件的属性进行查找,如文件名、文件大小、所有者、所属组、是否为空、访问时间、修改时间等。
一.find命令
基本格式:find path expression
1.按照文件名查找
(1)find / -name httpd.conf #在根目录下查找文件httpd.conf,表示在整个硬盘查找
(2)find /etc -name httpd.conf #在/etc目录下文件httpd.conf
(3)find /etc -name '*srm*' #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
(4)find . -name 'srm*' #表示当前目录下查找文件名开头是字符串‘srm’的文件
2.按照文件特征查找
(1)find / -amin -10 # 查找在系统中最后10分钟访问的文件(access time)
(2)find / -atime -2 # 查找在系统中最后48小时访问的文件
(3)find / -empty # 查找在系统中为空的文件或者文件夹
(4)find / -group cat # 查找在系统中属于 group为cat的文件
(5)find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件(modify time)
(6)find / -mtime -1 #查找在系统中最后24小时里修改过的文件
(7)find / -user fred #查找在系统中属于fred这个用户的文件
(8)find / -size +10000c #查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
(9)find / -size -1000k #查找出小于1000KB的文件
3.使用混合查找方式查找文件
参数有: !,-and(-a),-or(-o)。
(1)find /tmp -size +10000c -and -mtime +2 #在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件
(2)find / -user fred -or -user george #在/目录下查找用户是fred或者george的文件文件
(3)find /tmp ! -user panda #在/tmp目录中查找所有不属于panda用户的文件
二、grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式进行查找匹配。
基本格式:grep expression
1.主要参数
[options]主要参数:
—R:R的意思是递归的对目录下的所有文件(包括子目录)进行 grep
-c:只输出匹配行的计数。
-i:不区分大小写
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\:忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
.:所有的单个字符。
* :有字符,长度可以为0。
2.实例
(1)grep 'test' d* #显示所有以d开头的文件中包含 test的行
(2)grep ‘test’ aa bb cc #显示在aa,bb,cc文件中包含test的行
(3)grep ‘[a-z]\{5\}’ aa #显示所有包含每行字符串至少有5个连续小写字符的字符串的行
(4)grep magic /usr/src #显示/usr/src目录下的文件(不含子目录)包含magic的行
(5)grep -r magic /usr/src #显示/usr/src目录下的文件(包含子目录)包含magic的行
(6)grep -w pattern files : 只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
8、wc命令:统计指定文件中的行数、字数、字节数,并将统计结果显示输出。
wc [option] 文件名
-c 统计字节数
-l 统计行数
-m 统计字符数(不能与-c一起使用)
-w 统计字数(一个字被定义为被空白、跳格或换行字符分隔的字符串)
-L 显示最长行的长度
--help 显示帮助信息
--version 显示版本信息
ls -l |wc -l 查看有多少个文件
9、403:服务器拒绝请求状态码
10、java float 保留两位小数
float f = 1.2;
DecimalFormat decimalFormat = new DecimalFormat("#.00");//构造方法的字符格式这里如果小数不足两位,会以0补足
String p = decimalFormat.format(price);//format返回的是字符串
十二、软件管理
1、rpm包管理
RPM Package Manager(原Red Hat Package Manager),红帽子的包管理器
也称二进制,无需编译,可以直接使用
无法设定个人设置,开关功能,啥都不能自己设置
软件包示例:正在上传…重新上传取消正在上传…重新上传取消
名字---版本号---发布版本---系统平台---文件后缀
enterprice linux7
YUM工具
Yellow dog Updater,Modified
是一个在Fedoral和RedHat以及CentOS中的shell前端软件包管理器
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装
可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无需频繁的一次次下载。
目的:通知Linux服务器,通过本机的系统光盘获得软件包,并安装软件
YUM的核心配置目录:/etc/yum.repos.d/ repository仓库,里面有*.repo
1删除官方YUM库
2编写本地YUM库配置文件
vim /etc/yum.repos.d/dvd.repo是YUM的下载地址库目录,里面写以下
[dvd] 某一个库的名称,中括号是必须的
name=dvd 是库的说明,name是必须的
baseurl=file:///mnt/cdrom 下载库的具体地址,在本机找
gpgcheck=0 gpg:groupPackage关闭包校验
enabled=1 库的开关,1开0关
3挂载安装光盘,光盘放到服务器上还要通电。
ls /mnt/cdrom 没有这个文件
mkdir /mnt/cdrom
ls /dev/cdrom
先去通电
mount /dev/cdrom /mnt/cdrom 临时挂载,重启就没了
vim /root/.bashrc 命令写进这里面,开机的时候就会执行
4使用YUM安装和卸载软件
yum install -y httpd 安装软件,-yes自动答复
systemctl start httpd 启动软件
systemctl stop firewalld 关闭防火墙
systemctl disable firewalld 禁用防火墙开机自启
5YUM管理RPM包
安装 全新安装yum -y install httpd vsftpd 软件包3 软件包N
重新安装,当软件缺失文件,可尝试重新安装
yum -y reinstall httpd
升级安装yum -y update httpd
yum --help
查询 yum list httpd 带@的是已安装的
卸载 yum -y remove httpd 卸载程序
RPM工具
红帽和CentOS自带的管理RPM包的基本工具,rpm 无法处理依赖。安装无依赖包的时候很方便,不需要配置。
安装 先找到安装包
cd /mnt/cdrom/Packages
rpm -ivh wget-1.14-15.el7.x86_64.rpm i是安装h是百分比v是可视
帮忙下载东西的包,字符的迅雷
rpm -q wget 查询有没有装好
rpm -evh
2、源码包管理
source code 需要经过GCC,C++编译环境编译才能运行
可以设定个人设置,开关功能,但是配置复杂
正在上传…重新上传取消正在上传…重新上传取消
1去官网获取源码包
Tengine:tengine.taobao.org
或者使用wget命令,加下载地址
wget -o 存储路径 下载地址 -o指定下载到哪
2部署Tengine
准备编译环境如编译器,下面的是一些常见的编译工具
yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
解压
useradd www
tar xvf tengine-2.2.0.tar.gz
cd tengine-2.2.0
配置 prefix前缀的意思,安装路径
./configure --user=www --group==www --prefix=/usr/local/nginx
编译
make
安装
make install
启动测试
systemctl stop httpd httpd和nginx有冲突
/usr/local/nginx/sbin/nginx
systemctl stop firewalld
访问http://127.0.0.1能看到nginx,说明部署成功
RPM包:已经编译,直接安装,无法修改,简单快捷。
源码包:需要编译,可以修改,操作繁琐。
yum repolist 查看下载的包
3、一次性调度执行at
Schedule one-time tasks with at
at <TIMESPEC>
<TIMESPEC>示例:
now +5min
teatime tomorrow(teatime is 16:00,下午茶)
noon +4 days 中午
5pm august 3 2029
4:00 2019-11-27
例:
at now +2min 回车
useradd uuuu
ctrl+D输入完毕,提交任务
atq 查询任务
- 循环调度执行cron
Schedule recurring jobs with cron
crontab 用于设置周期被执行的指令,从标准输入设备读取命令,存放于crontab文件中,供之后读取和执行。
查看进程状态:
systemctl status crond.service
ps aux | grep crond crond程序运行是计划任务执行的根本
crond执行演示:
ls /var/spool/cron/ 计划任务存储位置
crontab -e Edit jobs for the current user创建计划
crontab -l List the jobs for the current user查询计划
管理员可以用-u usename去管理其他用户的计划任务
crontab -r Remove all jobs for the current users
删除计划
crontab -e
分时日月周 命令或脚本 六个部分用空格隔开
5 1 15 3 * 命令或者脚本 3月的15号1点05分,每年的这个时候执行,24小时制
*/5 * * * * 命令或脚本 每隔五分钟执行一次
0 2 1,4,6 * * 命令或脚本 每月1、4、6号
0 2 5-9 * * 命令或脚本 每月5-9号2点0分执行一次
* * * * * 命令或脚本 每分钟执行命令
0 * * * * 命令或脚本 每小时0分执行,整点执行
0 2 * * 5 命令或脚本 每个星期五2点整执行一次,月和周都写了取并集
执行完会把结果以邮件的方式发送给我,使用mail命令即可查看,按邮件的序号2即可看
十三、日志管理
1、日志进程
rsyslog系统日志进程,开机他就存在了
关心问题:哪类程序,产生的什么日志,放到什么地方
(各类应用程序,会以自己的方式记录日志)
ps aux | grep rsyslog 名字带个d是该程序的守护进程
常见的日志文件(系统、进程、应用程序)/var下面
tail -10 /var/log/messages 系统主日志文件
tail -f /var/log/messages 动态查看日志文件的尾部
tail /var/log/secure 认证、安全
tail /var/log/yum/log yum
tail /var/log/maillog 跟邮件postfix相关
tail /var/log/cron crond、at进程产生的日志
tail /var/log/dmesg 和系统启动相关
2、日志轮转logrotate