linux
如何用共享文件
x
点击虚拟机, 然后选择点击设置, 选项共享文件夹找到D:\myshare
,然后就可以了
- 在虚拟机中
cd /mnt/hgfs/share
- 注意如果你没有开启共享文件功能,那么你在虚拟机中找不到这个hgfs文件
shell 突然连接上不上虚拟机的问题和解决方法
- 重启ssh服务
systemctl restart sshd
- 查看你当前虚拟机的ip地址
昨天inet这里的ip地址是 192.168.202.134
现在变成了192.168.202.135
,所以需要更换xshell中的服务连接
- 断开NAT模式连接(还未尝试,但是说不定有用)
右下第三个图标,右击
vim 的学习
a 代表append
记住esc 就可以退回到 normal状态
普通模式变到 visual 模式摁下 v, 退回到 normal 模式摁下 esc 即可
光标移动
一下均在 normal 模式下进行
操作符
u 撤销, p粘贴 ,c修改,y是复制的意思
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38yyp向下复制一行
y + 2 + yp 代表向下复制两行
cc 删除一行 ()
d + i + < 删除<>括号里面的元素
c + i + < 删除<>括号里面的元素 并进入写入模式
c + a + < 删除包括<>在内的所有元素
u 代表撤回
dd 删除一行
2dd 删除两行
(使用cc可以删除后进入写入模式)
y + f + s 复制到第一个s的内容,然后 摁下p就是复制
d + f + s 找到第一个s的内容 ,然后删除从当前文本到s的所有内容
c + f + s 同上,但是删除之后,进入写入模式
d + i + t 代表删除标签内的所有元素
<html>
<div>
fadfa
</div>
<p>
dfa
</p>
<html>
在normal模式下输入d + i + t就可以实现把html中所有的元素删除
我们还可以配合尖角号来进行删除
d + ^ 删除开头的所有元素
d + $ 删除从光标开始往后的所有元素
v + i + w 快速选中当前光标所在的单词
大小写转换
可以结合上上面的操作, 如 v + i + w 选中一个单词然后把所有的元素都换成大写或者小写字母
tips
gd 可以跳转到定义 (ctrl + i 可以调回来)
切换标签页 g + t (往前) g + T(往后)
4 g t 跳转第二个标签页
easymotion
<leader><leader> s
leader 代表键盘
vim_surround
当你使用 cs “ [ 则去掉”,然后 [ 之间没有空格,] 之间有空格
替换标签可以使用 cs”t p> 就可以得到 一个标签
- 退回到命令行模式,然后输入
:wq
可以强制退出
linux
centos和vm虚拟机软件的安装看韩顺平
1.网络连接的三种方式
如果两个网络都在一个 192.168为开头的,那么他们都在同一个网段 在一个网段下的用户,可以相互链接
- 桥接模式,虚拟系统可以和外界系统通讯,但是容易造成ip冲突
- NAT模式:网络地址转换模式,虚拟系统可以和外部系统通讯,不造成ip冲突(首先这个)
- 主机模式:独立模式
2.虚拟机的基本知识
2.1虚拟机的克隆
- 注意克隆的时候,需要关闭linux系统
克隆的方式
- 引用拷贝
- 深度拷贝(完全复制一个过去)
2.2虚拟机的快照(我的理解是就像备份)
想要回到原先的某一个状态,就可以使用快照的机制
如果你现在在C,记录了A和B的快照,那么我们就可以通过快照机制回到A,在回到A之后,我们也可以回到B
2. 3删除(直接手动删除就好了)
2.4安装vmtools
3.目录结构:grin:
在linux的世界中,一切皆文件
- /bin 存放着最常用的指令
- /sbin 存放普通用户的主目录,在linux中每一个用户
- /lib 系统开机所需要最基本的动态连接的
- /etc 所有系统管理所需要的配置文件和子目录
- /usr 这是一个非常重要的,用户的所有应用程序和文件都放在这个目录
- /proc(不要动)
- /srv(不要动)
- /sys(不要动)
- /dev类似于windows的设备管理器
- /media
- /mnt 共享
/opt 主机额外安装软件所存放的目录//如安装oracle数据库
4.远程登录linux
- xftp : 传输文件
- xshell :传输命令
5.vim基本介绍
- 三种模式
wq: 写入并退出
快捷键
- yy: 拷贝当前行
4yy
复制4行 - dd: 删除当前行
4dd
删除当前行 - /关键字 ,回车查找,输入n就是查找下一个,输入N就是查找下一个
:set nu
:显示行号,:set nonu
:不显示行号gg
:快捷键到文档的最开始一行G
:快捷键到文档的最后一行u
撤销,如windows的ctrl+z
数字+shift+g
定位到数字对应的行
6.关机重启
-h 的h就是halt -r的r就是reboot
shutdown -h 代表1分钟后关机
shutdown -h 2 代表2分钟之后关机
shutdown -h now 代表现在关机
shutdown -r now 现在重启电脑
sync 把数据内存同步到磁盘之中。(建议在关机的时候, 执行一次, 免得出现问题)
7.用户登录和注销
su - root
root的时候使用logout的时候就会变成tom,在使用一次就会退出系统
上面的这些操作得在shell中使用。
su - 用户名可以切换,你的用户级别
8.用户管理
tip:pwd
显示当前用户所在的目录
8.1 添加用户
1 | # 创建用户 |
8.2删除用户
1 | # 删除用户milan,但是保留家目录,但是用户会消失(必须时root权限才能删除) |
- 如果你忘记加上-r操作,想要进一步的删除考虑一下做法
8.x其他的一些操作
高层级的退出到底层级的用户,不需要输入密码
当你想从高级的到低级别的时候, 我们就可以使用logout
who am i:查看当前用户的信息(用户取决于你第一次登录的信息)
查询用户名
1 | id king |
8.3用户组
tips:clear 清屏
8.3.1增加用户组
1 | groupadd 组名 |
8.3.2删除用户组
1 | groupdel 组名 |
- 如果没有创建用户没有指定组,会自动生成一个对应用户名称的组
8.3.3修改用户组
1 | usermod -g mojiao zwj 把zwj移动到mojiao组 |
- 从魔教变成了武当教
8.3.4用户和组相关文件
解释器:国内一般用bashshell
- 第一个指令为
vim etc/passwd
- 后面的指令也是
vim + 后面的一坨东西
9.linux使用指令
- 运行级别的介绍
- 输入
init n
跳入对应的状态 systemctl set-default graphical.target
,回到默认的状态systemctl set-default TARGET.target
设置回到的状态
修改初始init的方法。
1 | systemctl get-default |
如何找回root密码
首先,启动系统,进入开机界面,在界面中摁’e’进入编辑界面
进入编辑界面,使用键盘的上下键把光标往下移动,找到以LINUX16开头内容所在行数,在行的最后面输入: init=/bin/sh。
- 接着,输入完成后,直接按快捷键:
Ctrl+x
进入单用户模式 - 接着,在光标闪烁的位置输入 :
mount -o remount,rw /
- 输入passwd回车后,输入密码
在鼠标闪烁位置中(最后一行)输入
touch /.autorelabel
(注意touch和/之间有以一个空格)继续在光标闪烁位置,输入
exec /sbin/init
然后摁下回车键,等待系统自动修改密码
帮助指令
man获得帮助信息
- 如
man ls
- 选项可以组合使用 ls -al, ls -al/root
- 从man的提示中退出只要输入
q
就好了
- 如
help 获得shell内置命令的帮助信息
在linux里面,隐藏文件是以
.
开头的。
文件指令
- pwd : 显示当前的绝对路径
ls
ls - l
单列输出所有的文件ls - a
输出所有的文件- 选项还可以组合使用
ls - al
,ls -al /home
代表输出root目录下的所有文件
cd
cd ~
回到自己的家目录
cd ..
回到当前目录的上一级
mkdir
- 指令用于创建目录
创建dog目录
mkdir /home/dog
创建多级目录
mkdir -p /home/dog/animal
在当前/home
之中创建一个dog
,在dog
之中创建一个animal
rmdir
rmdir 删除一个空目录
- 只有空目录才可以使用
所以你不能删除掉有animal的cat的dir文件
- 想要删除需要用
rm -rf dir
比如我想要删除掉cat和animal,那么我们就可以使用这个递归删除.(r代表recursion)
rm -rf ./cat
通过上诉指令,将cat的所有文件,包括cat全部删除
touch
- 创建一个空文件
cp
- 指定的文件拷贝到指定的地址之中
-r选项
递归复制整个文件夹
将bbb内的所有文件拷贝到opt文件夹之中
cp -r /home/bbb/ /opt/
\cp -r /home/bbb/opt
强制覆盖所有文件,不需要一个一个的提示
rm
不同于上面的删除目录, 这个是删除文件
常用选项
- -r 递归删除整个文件夹
- -f 强制删除不提示
- 这些选项可以组合
- -rf强制删除所有文件夹不提示
比如将/home/hello.txt文件删除
rm /home/hello.txt
rm -f /home/hello.txt
两种方法得到的结果为上图
- tips
删除整个系统为-rm -rf /
但是这样会有系统提示
,为了绕开它的提示我们可以使用-rm -rf /*
mv指令
- 移动文件与目录或者重命名
在同一个目录下面, 就是重命名
否则就是移动文件.
移动整个目录
将bbb目录移动到home/下面
mv bbb /home/
cat指令(更安全)
他只能浏览方便, 但是不可以修改文件.
查看文件的内容
cat -n /etc/profile
拓展 : 管道命令
将前面命令的结果交给下一个命令进行处理
``cat -n /etc/profile | more`
more可以进行翻页等功能
more /etc/profile
less
功能:
它比more指令更加好用, 它的查看文件的效率更加.
echo
- 输出内容到控制台
- 环境变量带有美元符号
echo $HOSTNAME
显示当前服务器名字
echo "hello,world"
(注意这里必须要加上引号)
echo >
代表的是覆盖
echo >>
代表的是追加
head指令
- 用来显示文件的开头文件内容, 默认查看10行的内容.
head -n 5
显示前五行.
tail指令
显示文件的末尾内容, 默认显示末尾10行.
同head指令
选项
-f
实时显示文件内容.(非常重要)输入ctrl+c代表退出
拓展 : 重定向,将输出的内容写入到其他地方.
在linux系统中向文件中写入这个指令, 然后再tail的监控下得到了helloworld
> 和 >> 指令
因为以上指令的输出地方都是再控制台里面, 我们可以利用重定向将他转换到其他地方
cal : 显示当前的日历
cal > /home/cc.txt
将日历覆盖到cc.txt
文件之中
ln指令(这里是l不是i)
软链接, 类似于window之中的快捷键
ln -s /root/ /home/myroot
history
查看已经执行过的历史指令.
查看所有的指令
history
查看最近的十条指令
history 10
执行历史编号为
!5
时间日期类指令
date
date +%Y
date +%m
date +%d
date "+%Y- %m- %d %H:%M:%S"
date -s 设计系统当前时间
cal
查看日历指令
搜索查找类指令
find指令
find /home -name hello.txt
查找 home 名称下面的hello的记事本
find /opt -user nobody
可以换成将
nobody
替换成root
因为跳转的太快我们看不清里面的文件, 我们还可以使用 |more 来减缓速度
例如
find / -user root | more
-
find / -size +200M
找到从根目录下大于200M的文件ls -lh
将数据换成比较适合人看的单位
locate 指令
快速定位文件的路径
它的查询速度非常快速,他是建立自己的数据库进行查找
- 在第一次运行之前, 需要使用
updatedb
指令创建locate
数据库, 否则会检索不到
which 指令
可以查看某一个指令在哪个目录存放 。
which ls
grep 指令和管道符号
grep 过滤查找, 管道符, "|" 表示将前一个命令的处理结果输出传递给后面的命名处理
grep -n "查找内容" 地址
- 常用选项
-i
: 忽略大小写
压缩和解压指令
gzip / gunzip 指令
gzip 地址/
压缩后会保存源文件
gunzip压缩
选项 -r 递归压缩, 也就是压缩目录
zip -r myhome.zip /home/
将home目录及其包unzip -d /opt/tmp/ home/myhome.zip
解压myhome.zip刀tmp目录下
tar指令
- zxvf 解包文件
- zcvf 压缩打包文件
- 将上诉两个文件, 打包到一个tar.gz文件中
tar -zcvf pc.tar.gz helo.txt sss.txt
- 将
pc.tar.gz
解压到当前目录
tar -zxvf pc.tar.gz
- 将
pc.tar.gz
解压刀指定目录
(1).mkdir /opt/tmp2
(2).tar -zxvf /home/myhome.tar.gz -C /opt/tmp2
用户组
- 任何一个用户都必须有一个组
文件/目录 所有者
ls -ahl 查看所有文件,以及它的创建者
chown 用户名 文件名 将该文件 转换为对应的用户名
组的创建
groupadd 组名 groupadd monster
- 创建一个用户fox
useradd -g monster
- 给用户设置密码
passwd fox
第一个root代表用户名, 第二个代表组名
- 修改文件所在的组
chgrp 组名 文件名
touch orange.txt
chgrp fox orange.txt
创建一个orange的文本, 然后把这个文本的组名换成fox组
其他组
usermod -g 新组名 用户名
usermod -d 目录名 用户名
: 用户需要有进入到目录的权限
权限的基本介绍
这行数据的含义如下
第一位
是l
代表链接
是d
代表目录,相当于windows的目录
是-
代表是普通文件
是c
代表是字符设备 比如鼠标键盘 cd /dev 就可以看到, 下面的也可以通过这个方式看到
是b
是块设备, 比如硬盘
第1-3位确定所有者拥有对该文件的权限 –user
第4-6位确定所属组拥有的对该文件的权限 –group
第7-9位确定其他用户组拥有该文件的权限 – Other
如果对应权限没有,利用-
来表示缺省
- rwx rw- r--
上面分隔开就可以表示权限
rwx (r代表可读 w代表可写 x代表可以执行)
作用到文件和目录下面的区别
- 两个root之后的数字代表文件的字节大小, 后面是最后修改的日期 , 最后一个代表的是文件名
修改权限 - chmod
- 要先切换到对应的用户名那边先。
u:所有(拥有)者 g:所有组 o:其他人 a:所有人
-
运算符, 代表 除去用户对应输入字母的权限+
运算符, 代表 增加用户对应输入字母的权限当前abc的权限
- 输入该指令之后
chmod u=rwx,g=rwx,o=rx abc
- 权限变更位如下
输入chmod u-x,g+w abc
所有者权限x消失了,用户组
增加了w
权限
- 当然我们也可以通过数字来变更权限
r = 4 w = 2 x = 1
,所以 rwx 对应的数字为 = 4 + 2 + 1 = 7
chown - 修改文件所有者
chown tom /home/abc.txt
修改abc.txt的所有者为tom
修改前
修改后
-R
如果是目录,则使其所有子文件或者目录递归生效
chown -R tom /home/test
将test文件夹里面的所有文本全部变成tom用户的所属
chgrp - 修改文件所属组
类似于上面的chown
- 将abc.txt的组换成shaolin组
chgrp shaolin /home/abc.txt
- 将/home/test目录下的所有文件和目录的所有组全部变成shaolin组
chgrp -R shaolin /home/test
组的总结
- 如果想要对目录的文件进行修改, 我们必须先获得对应文件夹的执行权限。
- 如果我们有x权限,但是没有r权限,那么这个文件夹不能用
ls
操作, 但是可以cd到这个文件(而且我们也可以用vim
- 对于一个目录, 如果你没有w权限, 那么你就不能就目录里的文件进行删除,和创建文件
crond任务调度
- 指定系统在某一个时间调度。
- 指定系统定时调度
- 占位符
1 | */1 * * * * ls -l /etc/ > /tmp/to.txt(*/1 代表每1min都执行一次) |
cd
到/tmp/
里面,发现生成了一个to.txt
, 如果暂时还没有生成, 我们可以等一伙
- 最后一个* 代表星期几
特殊符号的说明
- 星期和日期尽量不要同时选
一个小的案例
- 我们先创建一个文本
my.sh
(还要把my。sh的权限修改为有x, chmod u+x) - vim my.sh 输入
date >> /home/mycal
cal >> /home/mycal
crontab -e
*/1 * * * * my.sh
- 最后效果为
案例二(我还没做,到时候装了数据库再说)
其他crontab指令
- crontab -r : 终止任务调度
- crontab -l:列出当前有那些任务调度
at指令
基本介绍
拓展 :ps -ef 检测当前的进程
- 结合过滤语句可以查看是否存在atd
ps -ef | grep atd
- 结合过滤语句可以查看是否存在atd
at命令选项
- at的时间定义
- 先输入时间指令
- 然后再输入命令指令
- 要退出的话,连续敲击
ctrl + D
atq可以查看当前系统执行工作任务
再输入命令的时候,打错了要输入ctrl + backspace
删除一个at进程, atrm 5(5 是他对应的编号)
linux 磁盘分区
挂载 (mount):
lsblk 查看挂载内容
lsblk -f 查看挂载分区(IDE硬盘 和SCSI硬盘)目前基本上都是SCSI硬盘
- uuid 分区的唯一标识符
增加硬盘示例
新增一个newdisk, 然后把他挂载到分区1
增加一个快硬盘(右击对应虚拟机, 然后点击硬盘添加。)
分区指令
fdisk /dev/?
- 之后还需要再进行格式化 , 具体操作为
挂载
卸载
如果利用命令行挂载,重启之后,之前挂载的内容会失效
想要永久挂载
将你要挂载的内容加入到里面
第一个数字:0/1 = 备份/不备份,第二个数字:2/1/0 = 根目录/其他目录文件检查/不检 查
- 对于第一个位置 ,你可以填写uuid, 也可以写它的地址 ,第二个位置为挂载到的地点, 后面几个就先照抄我们还没有学
磁盘情况查询
df -h
查看磁盘的情况
如果使用率超过了80%,那么需要清理硬盘,或者增加硬盘
查看指定目录的磁盘占用情况,默认为当前目录
使用
du -h --max-depth=1来查看磁盘的文件个数
磁盘情况-实用命令
- 统计opt目录下文件个数
grep过滤, 可以使用正则表达式, “^-“ 代表匹配前面为”-“的字符串
- 统计opt文件夹下目录的个数
grep过滤 , 可以使用正则表达式,”^.”代表匹配前面任意一个字符串
统计/opt文件夹下文件的个数,包括子文件夹里的
ls -lR /opt 目录下全部文件, wc -l可以统计个数
ls -lR /opt | grep “^.” | wc -l
tree可以显示文件内的所有内容, 但是要下载
sudo yum install tree
NAT网络原理图
vmnet8可以跟linux虚拟机通讯
但是虚拟机不能ping vmnet8 ,是因为windows里面会有防火墙
能上网, 是因为无线网卡做了代理
查看网络ip和代理
自行看65集就好
linux网络环境配置
- 自动获取, 登录之后ip地址就会发生改变
从自动分配变成static
这一节就是教你怎么修改成静态ip的
网络服务生效 service network restart 或者选择 reboot
设置主机名 和hosts映射
hostname - 查看当前主机名
修改主机的名字
vim /etc/hostname
那么如何通过主机名来查找主机
你只要在etc/hosts里面写入ip地址空格主机名,这样就可以通过主机名来访问了
它的原理为如下
- 先找网络域名服务器, 在按照该图来进行修改
- 如果某个人把你的etc/hosts修改为如下信息, 那么就会出现dns域名劫持
- 查看一个网站的ip地址可以使用ping 网站名称
想要修改hosts文件,可以用记事本管理员模式打开, 然后打开到C:\Windows\System32\drivers\etc\hosts
Linux进程
pid
: 进程号(每一个程序分配一个ID号)
显示系统的执行进程
ps指令
User 代表进程用户名
CPU 程序占用CPU百分比
MEM 占用实际物理内存的百分比
YSZ 占用虚拟内存的大小(KB)单位, 下面那个也是
VSZ 占用物理内存的大小(KB)单位,
STAT 当前运行的状态 s代表休眠, r正在运行 Z 僵尸进程 T 被跟踪或者停止 D短期等待
start 进程的开始时间
TIME 占用的cpu时间
command 启动这个进程的名字(也就是进程)
TTY 终端的名称 , 缩写
实例
- 要求以全格式查看所有进程, 已经进程的父进程
ps -ef
-e显示所有进程 -f全格式
ppid 代表父进程, 父进程为0 代表没有父进程
sshd 父进程信息
ps -ef | more sshd
终止进程
killall会把子进程也给干掉
四个实践
- 踢掉某一个用户 (注意不能用root的时候用
su -alan
,要直接新开一个shell来登录- ps -aux | grep sshd
- 终止远程登录服务
- 这个进程号代表xshell的进程
- 重新启动指令 /bin/systemctl start sshd.service
- 终止多个gedit
killall gedit
- 强制删除一个进程(因为有一些进程杀不掉) kill -9 xxxx
查看进程树pstree
pstree 显示进程
选项
-p 显示进程号
-u 显示进程的用户信息
服务进程
- 指令
- etc/init.d还可以通过该指令查看
停止掉网络服务之后, 就不能够在连接xshell
service network stop
: 可以让xshell连接不到服务器
service network restart
: xshell连接上
打开和关闭自启动
setup
打开这个管理界面
带上
*
号的会自启动取消星号 摁下空格
tab移动光标来退出
运行级别
- 多数选择3
chkconfig指令
- 输入chkconfig –level 3 network off 来关闭某个级别的网络服务
敲击chkconfig –level 3 network on之后
systemctl指令(明天学)/ 后天(昨天游泳了):swimmer:
- 基本指令
它的指令管理的服务在/usr/lib/systemd/system
查看
- firewalld.service 防火墙的名称
- systemctl [start | stop | restart | status] 服务名
systemctl status firewalld 查看防火墙的状态
- 如果想要将某个东西可以关闭或者开启自启动,要用enable或者disable
防火墙的原理
防火墙可以理解为筛子,通过预先设置的大小,来过滤掉不符合尺寸的服务
- 没有防火墙的时候, 外面的东西就可以随便进入
防火墙
- 打开或者关闭端口但是同时不关闭防火墙
查看协议 netstat -anp | more ,最左侧的数据就是协议
在修改端口状态之后,还有重新载入
firewall-cmd --permanent --add-port=111/tcp
注意这里的firewall结尾是没有d的
firewall-cmd --reload
查看防火墙是否存在
firewall-cmd –query-port=111/tcp
关闭之后
防火墙是 yes 才能够被访问到
动态监控进程
top指令 , 不同于ps ,他是动态的监控
选项
-d 秒数 指定top命令每隔几秒钟更新,默认是3秒
-i 使得top不显示任何闲置或者僵死的进程
-p 通过指定监控进程id来仅仅监控某个进程的状态
通过指定监控进程id
第一个数字代表系统时间
第二个数字代表运行时间
第三个代表使用的用户
第四个代表负载均衡(三个负载加起来,除以3 》 0.7说明电脑配置要升级一下了)
- 交互操作说明
监控xxx用户, 方法 : 先输入top 回车, 然后再输入
u
在输入用户名,回车即可之前没有alan进程,但是我们又登录了alan就新增了一个进程
终止指定进程 方法 : 输入top回车, 然后再输入k回车, 再输入要结束的id进程号
再按下9, 强制删除(型号量)
netstat指令
输入 netstat -an
proto : 协议
netstat -anp
会更加详细(会显示哪个进程再调用)
local address and foreign address之间的关系
local是linux的地址, foreign是windos的地址(这里要看本机的情况而定)
- 如果关闭连接之后
- 状态是先变成time-Wait 后面才会没有(因为tcp协议会暂时以为是只是网络不好)
- 查看sshd服务的信息
netstat -anp | grep ssh
rpm管理
- 介绍
rpm -qa | grep xx
查询已安装的rpm列表
rpm -q firefox
rpm -qi firefox
rpm -al firefox
查询文件所属的包
rpm -qf /etc/passwd
- 删除rpm包
强制删除 $rpm -e –nodeps foo 因为存在其他软件,需要依赖于这个安装包
安装rpm包
rpm -ivh RPM包全路径名称
yum指令
yum list | grep xx
查看yum服务器是否又需要安装的软件
yum install xxx
下载安装
配置
tomcat 安装
步骤如下:
[Apache Tomcat/8.5.88](http://192.168.202.138:8080/)
然后就可以访问了
- 在apa // 的webapps 的root中输入文件
/opt/tomcat/apache-tomcat-8.5.88/bin
,它的路径为
- 注意使用之前要先开启
./startup.sh
mysql安装
下载文件:
[wget](https://so.csdn.net/so/search?q=wget&spm=1001.2101.3001.7020) http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
(65条消息) 韩顺平——linux下的mysql安装过程(完全按照视频流程来的)成功版_快乐本乐的博客-CSDN博客
可以参考以上链接安装
shell编程快速入门
1 | !/bin/bash |
直接写脚本名称。运行 但是得加上执行权限
使用sh + 脚本名称 就可以不需要加上权限x
系统变量
- vim : set nu 可以查看行号
设置环境变量
定义环境变量要在/etc/profile文件中。
export之后, 要source /etc/profile文件,才可以显示出来文件
shell的补充
shell脚本的多行注释(字符串要独立写为一行)
1
2
3开头打这个:<<!
结尾打这个!
位置参数变量
在shcode文件夹中建立一个sh文件
- 输入部分指令之后,得到一下的结果
预定义变量
$! 后台最后一个运行的进程的进程号结果为
shell - 运算符
- 案例一(还有没有开始弄)
案例二
shell 判断
过程
中括号和语句之间要有空格
- 如果要写一个为空的判断, 中括号之间必要要有空格(空判断为false)
- 如果只在中括号中输入字符, 那么条件为真, 因为非空返回true
条件判断
流程控制
- 需要注意的是,这里的其他输入的是
*
, 而不是“*”
.
1 | !/bin/bash |
for
while
read
- 通过这种方式就可ui理解read函数
函数
- dirname
自定义函数
综合实战
- 备份数据库
- 删除源文件, 然后打包
-exec继续执行 命令 {}前面指令得到的内容 \;结尾符号
自己的实战复习
- 时间
1 | !/bin/bash |
- date代表当前的日期, 后面的代表时间分钟秒数,还有小时分钟和秒数。
日志管理
- 重要的任务
lastlog 不要用cat查看, 直接打入lastlog
就好了
ulmp 不要用cat 用who就好了
原理图
- 再
/etc/rsyslog.conf
文件里面有一个后台程序,会自动的生成这些日志
查看rsyslog是否存在
ps -aux | grep rsyslog
ps -aux | grep -v rsyslog
反向匹配(选择不含有rsyslog的)查看所有进程状态
systemctl list-unit-files | grep "rsyslog"
日志类型
- 日志级别
一个日志的格式为*.*
,第一个*
代表日志的类型(具体参考第一张图片),第二个*
代表日志级别
- 对于一个日志它可以这么查看, 第一个代表时间, 第二个代表用户,第三个代表程序或者服务,第四个发生的事件
日志管理服务(自定义)
第一步
vim /etc/rsyslog.conf
第二步 然后找到一个最后的一个日志类型信息,打入
*.*
,然后输入/etc/log/wjh.log
然后reboot
当我输错秘密的时候, 就会产生一下的文件
日志轮替(把旧的日志文件改名等操作,换成新的)
这个文件规定了轮替的规则
但是也可以单独的给某个日志指定策略
logrotate。log文件的规则如上。
自定义的方法
我们再自定义日志文件的时候,可以把它写到/etc/logrotate.d
的目录下。没必要一股儿脑的全部写到/etc/logrotate.conf
配置文件中
我自己写了一个文件为wjh.log
1 | /var/log/wjh.log |
日志轮换机制
它会又一个crond 的后台程序, 然后回用logrotate 然后对/etc/logrotate.d
或者是/etc/logrotate.conf
来处理
内存日志
- 查看内存日志, 他是写入内存的,而不是文件
linux定制(先过)
总的思路
备份 - 实体机做快照
restore 回复
Nginx 命令
以下指令都是再sbin目录下运行
/usr/local/nginx/sbin
./nginx -v ,显示nginx的版本
./nginx -t 检查语法
./nginx 启动nginx
- ./nginx stop 停止服务
lrzsz 指令
这是可以用来传输文件的指令
- 他会传输到当前的文件夹里面