centos 7 卸载 mariadb 的正确命令
列出全部被安装的rpm package rpm -qa | grep mariadb
卸载 rpm -e mariadb-libs-5.5.37-1.el7_0.x86_64
错误:依赖检测失败:
libmysqlclient.so.18()(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 须要
强制卸载,由于没有--nodeps rpm -e --nodeps mariadb-libs-5.5.37-1.el7_0.x86_64
rpm -q tree &> /dev/null || yum -q -y install vsftpd 这是一键安装脚本。
RAID-10的工做原理
RAID10结合RAID1和RAID0,先镜像,再条带化;
特色: 磁盘数:最低4个,2n个,n大于等于2;
优势:读性能很高,写性能比较好,数据安全性好,容许同时有N个磁盘失效;
缺点:利用率只有50%,开销大;
可用空间:N*min(S1,S2,...其中最小空间)/2;
有容错能力:每组镜像最多只能坏一块;
适用领域:多用于要求高可用性和高安全性的数据库应用;
RAID-01:先分红两组作成RAID-0,再把组成的RAID-0作成RAID-1;不符合经常使用方法,每一组有一块坏的硬盘可能性大;
RAID-50的工做原理
是RAID5和RAID0的结合,先实现RAID5,再条带化;(先作RAID-5在作RAID-0,最少6块盘,每组容许坏1块盘,空间利用率灵活)、RAID7(某家公司的私有技术,实际是文件服务器)
特色:磁盘数:最低6个;
优势:比RAID5有更好的读性能,比相同容量的RAID5重建时间更短,能够允许N个磁盘同时失效;
缺点:设计复杂,比较难实现;同一个RAID5组内的两个磁盘失效会致使整个阵列失效;
适用领域:大型数据库服务器、应用服务器、文件服务器等应用;
重启linux网络的时候出现 this device is not active的解决办法
1.service NetworkManager stop
2.chkconfig NetworkManager off
3./etc/init.d/inetwork restart
进入救援模式的几种方法node
centos7最小化安装,在默认状况下,会出现以下界面: Install centos 7 Test this media & install centos 7 Troubleshooting 将鼠标置于第一项,按tab键,会弹出: vlinuz initrd=initrd.ing inst.stage2=hd:LABEL=centos\x207\x28x86_64 quiet 此处输入一个参数便可进入救援模式,或者 输入rescue 加参数 也行 鼠标置于Troubleshooting,按tab键,会弹出: vlinuz initrd=initrd.ing inst.stage2=hd:LABEL=centos\x207\x28x86_64 rescue quiet 或者:鼠标置于Install centos 7 按esc键,会出现 boot:此时输入“rescue” 也能进入救援模式
1 Shell脚本是什么、它是必需的吗?
答:一个Shell脚本是一个文本文件,包含一个或多个命令。做为系统管理员,咱们常常须要使用多个命令来完成一项任务,咱们能够添加这些全部命令在一个文本文件(Shell脚本)来完成这些平常工做任务。mysql
二、什么是默认登陆shell,如何改变指定用户的登陆shell
答:在Linux操做系统,“/bin/bash”是默认登陆shell,是在建立用户时分配的。使用chsh命令能够改变默认的shell。示例以下所示:
#chsh <用户名> -s <新shell>
#chsh linuxtechi -s /bin/shlinux
三、能够在shell脚本中使用哪些类型的变量?
答:在shell脚本,咱们可使用两种类型的变量:
系统定义变量
用户定义变量
系统变量是由系统系统本身建立的。这些变量一般由大写字母组成,能够经过“set”命令查看。nginx
用户变量由系统用户来生成和定义,变量的值能够经过命令“echo $<变量名>”查看。 c++
四、如何将标准输出和错误输出同时重定向到同一位置?
答:有两种方法:
A、2>&1 (如# ls /usr/share/doc > out.txt 2>&1 )
B、 &> (如# ls /usr/share/doc &> out.txt )web
五、 shell脚本中“if”语法如何嵌套?
答:基础语法:
if [ 条件 ]
then
命令1
命令2
…..
else
if [ 条件 ]
then
命令1
命令2
….
else
命令1
命令2
…..
fi
fi面试
六、shell脚本中“$?”标记的用途是什么?
答:在写一个shell脚本时,若是你想要检查前一命令是否执行成功,在if条件中使用“$?”能够来检查前一命令的结束状态。简单的例子以下:
root@localhost:~# ls /usr/bin/shar
/usr/bin/shar
root@localhost:~# echo $?
0 若是结束状态是0,说明前一个命令执行成功。
root@localhost:~# ls /usr/bin/share
ls: cannot access /usr/bin/share: No such file or directory
root@localhost:~# echo $?
2 若是结束状态不是0,说明命令执行失败。正则表达式
七、在shell脚本中如何比较两个数字 ?
答:在if-then中使用测试命令( -gt 等)来比较两个数字,例子以下:redis
#!/bin/bash x=10 y=20 if [ $x -gt $y ] then echo “x is greater than y” else echo “y is greater than x” fi
八、shell脚本中break命令的做用 ?
答:break命令一个简单的用途是退出执行中的循环。咱们能够在while和until循环中使用break命令跳出循环。
九、 shell脚本中continue命令的做用 ?
答:continue命令不一样于break命令,它只跳出当前循环的迭代,而不是整个循环。continue命令不少时候是颇有用的,例如错误发生,但咱们依然但愿继续执行大循环的时候。算法
十、 告诉我shell脚本中Case语句的语法 ?
case 变量 in
值1)
命令1
命令2
…..
最后命令
!!
值2)
命令1
命令2
……
最后命令
;;
esac
十一、shell脚本中while循环语法 ?
答:如同for循环,while循环只要条件成立就重复它的命令块。不一样于for循环,while循环会不断迭代,直到它的条件不为真。基础语法:
while [ 条件 ]
do
命令…
done
十二、 如何使脚本可执行 ?
答:使用chmod命令来使脚本可执行。例子以下:
1三、“#!/bin/bash”的做用 ?
答:#!/bin/bash是shell脚本的第一行,称为释伴(shebang)行。这里#符号叫作hash,而! 叫作 bang。它的意思是命令经过 /bin/bash 来执行。
1四、 shell脚本中for循环语法 ?
答:for 循环的基础语法:
for 变量 in 循环列表
do
命令1
命令2
….
最后命令
done
1五、 如何调试shell脚本 ?
答:使用'-x'参数(sh -x myscript.sh)能够调试shell脚本。另外一个种方法是使用‘-nv’参数( sh -nv myscript.sh)。
1六、shell脚本如何比较字符串?
答:test命令能够用来比较字符串。测试命令会经过比较字符串中的每个字符来比较。
1七、Bourne shell(bash) 中有哪些特殊的变量 ?
答:下面的表列出了Bourne shell为命令行设置的特殊变量。
内建变量 解释
$0 命令行中的脚本名字
$1 第一个命令行参数
$2 第二个命令行参数
….. …….
$9 第九个命令行参数
$# 命令行参数的数量
$* 全部命令行参数,以空格隔开
1八、 在shell脚本中,如何测试文件 ?
答:test命令能够用来测试文件。基础用法以下表格:
Test 用法
-d 文件名 若是文件存在而且是目录,返回true
-e 文件名 若是文件存在,返回true
-f 文件名 若是文件存在而且是普通文件,返回true
-r 文件名 若是文件存在并可读,返回true
-s 文件名 若是文件存在而且不为空,返回true
-w 文件名 若是文件存在并可写,返回true
-x 文件名 若是文件存在并可执行,返回true
1九、在shell脚本中,如何写入注释 ?
答:注释能够用来描述一个脚本能够作什么和它是如何工做的。每一行注释以#开头。例子以下:
#!/bin/bash
#This is a command
echo “I am logged in as $USER”
20、如何让 shell 就脚本获得来自终端的输入?
答:read命令能够读取来自终端(使用键盘)的数据。read命令获得用户的输入并置于你给出的变量中。例子以下:
#vi /tmp/test.sh
#!/bin/bash
echo ‘Please enter your name’
read name
echo “My Name is $name”
#./test.sh
Please enter your name
LinuxTechi
My Name is LinuxTechi
2一、如何取消变量或取消变量赋值 ?
答:“unset”命令用于取消变量或取消变量赋值。语法以下所示:
#unset <变量名>
2二、 如何执行算术运算 ?
答:有两种方法来执行算术运算:
1.使用expr命令
#expr 5 + 2
2.用一个美圆符号和方括号($[ 表达式 ])例如:
test=$[16 + 4] ; test=$[16 + 4]
2三、do-while语句的基本格式 ?
答:do-while语句相似于while语句,但检查条件语句以前先执行命令(LCTT 译注:意即至少执行一次。)。下面是用do-while语句的语法
do
{
命令
} while (条件)
2四、在shell脚本如何定义函数呢 ?
答:函数是拥有名字的代码块。当咱们定义代码块,咱们就能够在咱们的脚本调用函数名字,该块就会被执行。示例以下所示:
$ diskusage () { df -h ; }
译注:下面是我给的shell函数语法,原文没有
[ function ] 函数名 [()]
{
命令;
[return int;]
}
centos6 service atd start 此次当即启动 chkconfig atd on 下次开机启动 service iptables stop 此次当即中止防火墙 chkconfig iptables off 下次开机时也不要启动 centos7 systemctl start atd.service 此次当即启动 systemctl enable atd.service 下次开机启动 systemctl stop firewalld 此次已经启动,当即中止防火墙 systemctl disable firewalld 此次运行时关闭,下次开机时也不要启动 centos六、7都要作的一步: 时间同步:crontab -e 计划任务:*/30 * * * * /usr/bin/ntpdate 172.20.0.1 &> /dev/null
date命令:系统时间
date [OPTION]... [+FORMAT]:显示日期时间;
date [MMDDhhmm[[CC]YY][.ss]]:设定日期时间;
FORMAT:格式说明
%F:日期,显示为数字,格式为:2016-03-02;
%D:显示英制格式,月日年,显示格式为:03/02/16;
%T:时间,显示为数字,格式为:15:52:16;
%Y:年份,只显示完全年份数字(4位数字),显示格式为:2016;
%y:显示年份的后两位,显示格式为:16;
%m:月份,只显示数字,显示格式为:03;
%d:日期,只显示数字,显示格式为:02;
%H:小时,只显示数字,显示格式为(00..23):15;
%k:小时,显示格式为(0..23);
%I:小时,格式为(01..12);
%l:小时,显示格式为(1..12);
%h:显示月份,显示格式为:3月;
%M:分钟,只显示数字,显示格式为:52;
%S:秒钟,只显示数字,显示格式为:16;
%a:缩写星期;
%A:完整星期;
%b:缩写月份;
%B:完整月份;
%r:显示格式为(11:11:04 PM);
%R:同%H%M,格式为(23:37)
%s:从1970年1月1日至此刻所经历的秒数;timestamp;显示格式为:1456905397;
文件系统的挂载:把额外的文件系统与当前根文件系统上的某个目录创建关联关系,并以之做为新的文件的访问入口的操做过程,就叫作挂载(mount),拆除此关联关系的过程,即为卸载(umount);
破解centos7,centos6和centos5 的root口令
1、centos5,6破解root口令,前提:待在电脑前,重启电脑
一、在滚动条出现时,按esc键,出现菜单界面,按“ a ”键,输入“ 1 ”模式,(注意:quit后要空一格输入),此时效果为:无需任何操做便可进入root用户的命令行,
二、在命令行输入“ passwd ”,便可更改新口令,输入2次,
2、centos7破解root口令,
一、首先在菜单界面按【e】键,进入启动文件界面后
二、按【↓】拉到底部
在 "LANG=zh_cn.UTF-8" 同行后面加上“init=/bin/sh”
而后按【Ctrl+X】进入“单用户模式”
三、输入【ls】,回车,再输入【mount –o remount ,rw / 】,回车 (注意空格)
四、输入【passwd】(注意:密码不能少于8位),重复输入两次密码
五、输入【touch /.autorelabel】,回车,再输入【exec /sbin/init】回车
以便重启系统。
安装虚拟机时修改网卡名称为eth0的方法:(按tab键即会弹出)
[root@centos7 network-scripts]#vi ifcfg-eth0
BOOTPROTO=none
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.141.200
DNS1=192.168.0.1
DNS2=114.114.114.114 #仅主机不需加网关!
[root@centos7 network-scripts]#vi ifcfg-eth1
BOOTPROTO=none
DEVICE=eth1
ONBOOT=yes
IPADDR=172.18.9.200
GATEWAY=172.18.0.1 #加上网关便可ping通外网!
DNS1=172.18.0.1
1、修改命令提示符:
[root@200 ~]#cd /etc/profile.d
[root@200 profile.d]#vim env.sh
PS1="[\e[1;32m][\u@\h \W]\$[\e[0m]" #命令提示符为淡绿色!不用source生效便可永久保存!
2、系统添加一块新硬盘不用关闭系统便可加载硬盘信息的操做:
[root@centos7 ~]#ls /sys/class/scsi_host
host0 host1 host2
[root@centos7 ~]#echo "- - -" > /sys/class/scsi_host/host0/scan
3、设置命令别名(简化操做,节省时间):
[root@centos7 ~]#ls -a
. .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc .tcshrc
[root@centos7 ~]#vi .bashrc
alias cdnet='cd /etc/sysconfig/network-scripts/'
alias xy='systemctl restart network'
alias scan='echo "- - -" > /sys/class/scsi_host/host0/scan'
[root@centos7 ~]#source .bashrc #source 使其生效!
4、建立本地光盘yum源:
yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools vim iotop bc zip unzip zlib-devel lrzsz tree screen lsof tcpdump wget ntpdate
一、挂载本地光盘;mount /dev/sr0 /mnt
[root@centos6 ~]# mount /dev/sr0 /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only
二、清空/etc/yum.repos.d/的自带文件
[root@centos6 ~]# cd /etc/yum.repos.d/
[root@centos6 yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Vault.repo
[root@centos6 yum.repos.d]# rm -f *
三、编辑base.repo文件
[root@centos6 ~]# vim /etc/yum.repos.d/base.repo
[base]
name=file
baseurl=file:///mnt
gpgcheck=0
#[epel]
#name=epel
#baseurl=https://mirrors.aliyun.com/epel/6/x86_64/
#gpgcheck=0 由于更多的在用本地光盘yum源,因此把aliyun源给禁用,要注释掉,避免冲突
四、清除yum缓存,重读repolist列表:
[root@centos7 yum.repos.d]# yum clean all
Loaded plugins: fastestmirror, langpacks
Cleaning repos: base
Cleaning up list of fastest mirrors
[root@centos7 yum.repos.d]# yum repolist
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
base | 3.6 kB 00:00:00
(1/2): base/group_gz | 166 kB 00:00:00
(2/2): base/primary_db | 6.0 MB 00:00:00
repo id repo name status
base file 10,019
repolist: 10,019
五、使用本地yum源安装目标软件:yum install xxxx
当出现以下问题时:#yum install -y redis
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
No package redis available.
Error: Nothing to do
解决办法:
#wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
#rpm -ivh epel-release-6-8.noarch.rpm
#yum -y install redis 便可安装成功!
绝对路径:以正斜杆开头,完整的文件的位置路径,可用于任何想指定一个文件的时候。 相对路径:不以斜杠开头,指定相对于当前工做目录或某目录的位置。硬连接:ln 目标文件名 连接名,软链接: ln -s 目标文件名
软硬:{共性}:修改软硬连接文件,全部的文件都是同步修改的。
硬连接: 本质:同一个文件多个名字、连接数:有一个以上的连接,不可跨分区,只容许对文件建立连接,不依赖原始文件,删除硬连接文件的源文件,硬连接文件仍然存在,不占用空间,格式:ln 目标文件 连接名
软链接:本质: 一个文件对应快捷方式,是不一样文件,连接数:只有一个连接,能够跨分区,能够对目录和文件夹进行连接,依赖于原始文件,删除源文件,软链接则指向一个空文件,它具备依赖性,占用磁盘空间,格式: ln -s 目标文件 源文件
自定义分区:
/dev/sda1 /boot 1G
/dev/sda2 / 50G
/dev/sda3 swap 2G
/dev/sda4 扩展分区
/dev/sad5 /data 10G
Centos7 重启网卡命令:systemctl restart network
Centos6 重启网卡命令:service network restart
设置主机和IP绑定信息:cat /etc/hosts
查看内存信息: cat /proc/meminfo
修改IP地址: vim /etc/sysconfig/network--scripts/ifcfg--ens33
su 与 su-的区别:
su:非交互式登陆,在环境变量下不切换
su-:交互式登陆(彻底切换),当前目录改变为切换用户,在家目录,连同环境一同切换。
对/etc/目录,分别执行命令,实现如下功能
(1)按从大到小顺序显示文件列表 : ll -S /etc
(2)只显示隐藏文件 :ll -d /etc/.
(3)只显示目录 : ll -d /etc//
(4)按mtime时间显示文件列表 : ll -t /etc
(5)按atime时间显示文件列表 : ll -u /etc
正则表达式部分:
0-9: [0-9] 10-99: [1-9][0-9] 100-199:1[0-9][0-9] 200-249:2[0-4][0-9] 250-255:25[0-5]
过滤ifconfig命令结果中全部大于0且小于255的三位数
ifconfig | egrep -o "\<((1[0-9]{2}|2[0-4][0-9]|25[0-4]))"
取IPV4地址:ifconfig ens33| grep -Eo "([0-9]{1,3}.){3}[0-9]{1,3}" head -1
取分区利用率:df | grep " /dev/sd " | grep -o " [0-9]{1,3}%" | grep -o " [0-9]+ " | sort -nr | head - n1
取分区利用率:sed -rn ' s/^([^[:space:]]+).([0-9]+)%./\2/p'
用户:sed -rn ' s/^([^[:space:]]+).([0-9]+)%./\1/p'
查看版本型号: cut -d "." -f1 /etc/redhat-release |egrep -o "[0-9]+"
查看版本型号:grep -o " [0-9]+. " /etc/redhat-release | grep -o " [0-9]+ "
查看版本型号:sed -rn " s/.([0-9]+)../\1/p " /etc/redhat-release
匹配手机号码:egrep -o " 1[0-9]{10} " tel.txt
匹配email邮箱:egrep -o "([[:alnum:]]|_)+@[[:alnum:]]+.com$" mail.txt
取/etc/sysconfig/network-scripts/ifcfg-ens33基名,用两种方法实现。
A、basename /etc/sysconfig/network-scripts/ifcfg-ens33
B、echo /etc/sysconfig/network-scripts/ifcfg-ens33 | egrep -o "[^/]+$"
|grep -o ".[^/] 取基名 |egrep -o "[^/]+$" 取/下的基名
|egrep -o "[^/]+/?$" 取/前的目录名
|sed -r 's@(./)([^/]+)/?@\2@' 取基名
|sed -r 's@(./)([^/]+)/?@\1@' 取目录名
使用sed命令取IPV4地址:
一、|sed -n '2p' |sed -r 's/inet//' |sed -r 's/netmask.//' |tr -d " "
二、|sed -n '2p' sed -e 's/^.inet//' -e 's/.//'
三、|sed -n -e '2s/^.inet//' -e '2s/ .//p'
四、|sed -nr '2s@.inet (.) .n.@\1@p'
五、|sed -nr '2s/[^0-9]+([0-9.]+)./\1/p'
统计/var/log/httpd/access.log日志访问频繁前十的地址,并从大到小排序。
cat access.log |cut -d" " -f1 |sort |uniq -c |sort -nr|head -n10
例题:一块新硬盘插入linux主机后,怎样才能正常使用:
一、格式化分区用fdisk命令进行,二、制做文件系统用mkfs.xfs命令进行,三、挂载用mount命令进行,四、编辑配置文件“ /etc/fstab ”实现自动挂载。
结果:x= y= z= echo " a b c " |{ read x y z ;echo x=$x y=$y z=$z;} 结果:x=a y=b z=c echo " a b c" | {read x y z ;echo x=$x y=$y z=$z;} 结果:x=a y=b z=c echo " a b c " | while read x,y,z;do echo x=$x y=$y z=$z,done 结果:x=a y=b z=c 若cat > f1 --->abc xx yy zz 234 cat f1 |while read x y z ;do echo x=$x y=$y z=$z;done 结果:x=a y=b z=c x=xx y=yy z=zz x=2 y=3 z=4
答:分三步:一、探究cp外部命令有啥权限,他至少必需要有x:执行权限。二、
/etc/fstab:/fstab 只要有读权限就能够了,前提是/etc要有x执行权限,/etc能够没有读权限,只要/etc有基本可执行权限进得去就能够。三、/data/dir:至少要有执行和写权限。
总结:命令的权限:一、cp:这是个程序,至少要有执行权限,二、要拷贝的文件:/etc/fstab:/fstab 至少要有读权限,而所在文件夹必需要有可执行权限,要不进不去,三、要拷贝的目标文件夹至少要有执行和写权限。
usermod [OPTION] login
-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s SHELL:新的默认SHELL
-c 'COMMENT':新的注释信息
-d HOME: 新家目录不会自动建立;若要建立新家目录并移动原家数据,同时使用-m选项
-l login_name: 新的名字
-L: lock指定用户,在/etc/shadow 密码栏的增长 !
-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
例题:建立下面的用户、组和组成员关系
名字为webs 的组
用户nginx 使用webs 做为附属组
用户varnish,也使用webs 做为附属组
用户mysql,不可交互登陆系统,且不是webs 的成员, nginx, varnish, mysql密码都是magedu
[root@magedu ~]# groupadd webs
[root@magedu ~]# useradd -G webs nginx
[root@magedu ~]# useradd -G webs varnish
[root@magedu ~]# useradd -s /sbin/nologin mysql
[root@magedu ~]# echo "magedu"|passwd --stdin nginx
[root@magedu ~]# echo "magedu"|passwd --stdin varnish
[root@magedu ~]# echo "magedu"|passwd --stdin mtsql
编写显示系统信息的脚本:(要考虑到可更改性,可维护性) [root@centos7 script35]# vim systeminfo.sh #!/bin/bash #******************************************************************** #Author: Xingxiaoyatongxue #QQ: 1098775809 #Date: 2019-02-05 #FileName: systeminfo.sh #URL: http://www.magedu.com #Description: The test script #Copyright (C): 2019 All rights reserved #******************************************************************** COLOR="\e[1;31m" COLOREND="\e[0m" echo -e "my host name is $COLOR`hostname`$COLOREND" echo -e "my Adress is $COLOR`ifconfig ens38|grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'|head -n1`$COLOREND" echo -e "OS version is $COLOR`cat /etc/centos-release`$COLOREND" echo -e "Kernel version is $COLOR`uname -r`$COLOREND" echo -e "CPU type is $COLOR`lscpu |grep "Model name" |tr -s " " |cut -d: -f2`$COLOREND" echo -e "Mem total is $COLOR`head -n1 /proc/meminfo|grep -o "[0-9].*"`$COLOREND" echo -e "Disk is $COLOR`lsblk|grep -Eo "[0-9]+G" |head -1`$COLOREND" [root@centos7 script35]# bash systeminfo.sh my host name is centos7.localdomain my Adress is 192.168.141.130 OS version is CentOS Linux release 7.6.1810 (Core) Kernel version is 3.10.0-957.el7.x86_64 CPU type is Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz Mem total is 2379348 kB Disk is 200G
[ $ver -eq 5 ] && echo ver is 5 || echo ver is not 5 释义:若 [ $ver -eq 5 ] 为真,就执行 echo ver is 5 若 [ $ver -eq 5 ] 为假,就执行 echo ver is not 5 cmd1 短路与&& cmd2 若cmd1 真,执行cmd2 结果未知 若cmd1 假,不执行cmd2 结果为假 cmd1 短路或|| cmd2 若cmd1 真,不执行cmd2 结果为真 若cmd1 假,执行cmd2 结果未知
设置本地解析器/etc/hosts,在使用dns前检查
添加本机地址为172.18.119.74解析映射为magedu.com,172.18.0.1映射为server.com
[root@node1 ~]# vim /etc/hosts
添加内容:
172.18.119.74 magedu.com
172.18.0.1 server.com
进程管理部分:
buffer 缓冲区 屡次write,合并成一次write
cache 缓存 从高速设备代替慢速
“ lsof -i ”:查看某个端口是哪一个进程在使用, “ iotop ”:查看是哪一个进程带来了大量的磁盘I/O,(查看哪一个进程让磁盘I/O)特别繁忙。“ pid ”:每一个进程系统都会分配一个数字。
网段数:2^(可变的网络ID), 划分子网数:2^(网ID借主ID), 主机数:2^主机ID位-2, 网络ID:IP与子网掩码,
一、tar的意思是Together ARchive(打包归档)。咱们能够用来打包,也能够用来解压包,并且还支持打包后用各类格式压缩(gz、bz二、xz等)。
单个参数意义:
f: 归档file
v: verbose(注:详细),显示压缩过程的详细信息
t: list,显示归档的内容
x: extract,解压
c: compress,压缩
z: gzip格式压缩,后缀为.gz
j: bzip2格式压缩,后缀为.bz2
J: xz格式压缩,后缀为.xz
经常使用组合:
组合参数 意义 压缩文件后缀
cvf 原始tar包,不压缩 .tar
zcvf 先tar,后gzip压缩 tar.gz 、tgz
jcvf 先tar,后bzip2压缩 tar.bz2 、tbz2
Jcvf 先tar,后xz压缩 tar.xz、txz
xvf 解压全部格式,通用解压命令 -
(1)、 简述raid0、raid一、raid5三种工做模式的工做原理及特色
(2)描述linux系统下建立软RAID5的命令和步骤
(1)、RAID0
RAID 0亦称为带区集。它将两个以上的磁盘并联起来,成为一个大容量的磁盘。在存放数据时,分段后分散存储在这些磁盘中,由于读写时均可以并行处理,因此在全部的级别中,RAID 0的速度是最快的。可是RAID 0既没有冗余功能,也不具有容错能力,若是一个磁盘(物理)损坏,全部数据都会丢失。
RAID1
两组以上的N个磁盘相互做镜像,在一些多线程操做系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,与RAID 0相同。另外写入速度有微小的下降。只要一个磁盘正常便可维持运做,可靠性最高。其原理为在主硬盘上存放数据的同时也在镜像硬盘上写同样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工做。由于有镜像硬盘作数据备份,因此RAID 1的数据安全性在全部的RAID级别上来讲是最好的。但不管用多少磁盘作RAID 1,仅算一个磁盘的容量,是全部RAID中磁盘利用率最低的一个级别。
若是用两个不一样大小的磁盘建RAID 1,可用空间为较小的那个磁盘,较大的磁盘多出来的空间也能够分区成一个区来使用,不会形成浪费。
RAID5
RAID Level 5是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分区)技术。RAID 5至少须要三块硬盘,RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,而且奇偶校验信息和相对应的数据分别存储于不一样的磁盘上。当RAID5的一个磁盘数据发生损坏后,能够利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID 5能够理解为是RAID 0和RAID 1的折衷方案。RAID 5能够为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID 5具备和RAID 0相近似的数据读取速度,只是由于多了一个奇偶校验信息,写入数据的速度相对单独写入一块硬盘的速度略慢,若使用“回写缓存”可让性能改善很多。同时因为多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,便宜。
(2)、新增长一块硬盘sdb,200G
划分4个分区,分别为20G
fdisk /dev/sdb,具体过程不贴了,最后的效果是这样:
Device Boot Start End Blocks Id System
/dev/sdb1 2048 41945087 20971520 83 Linux
/dev/sdb2 41945088 83888127 20971520 83 Linux
/dev/sdb3 83888128 125831167 20971520 83 Linux
/dev/sdb4 125831168 419430399 146799616 5 Extended
/dev/sdb5 125833216 167776255 20971520 83 Linux
sdb1,sdb2,sdb3,sdb5各20G
#建立md0的软raid5阵列
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb5
#格式化
mkfs.xfs /dev/md0
#挂载
mkdir /mnt/raid5
mount /dev/md0 /mnt/raid5
天天的2 点和12 点整,将/etc 备份至/testdir/backup目录中,保存的文件名称格式为etcbak-yyyy-mm-dd-HH.tar.xz
crontab -e
0 2,12 * /usr/bin/tar -Jcvf etcbak-data +%F-%H
.tar.xz /etc
列出三个私有地址网络,用 CIDR 表示,并将 10.100.208.0/20 网络划分红 8 个子网,写出最大子网络的 IP 范围。
三个私有地址网络:
10.0.0.0/8~10.255.255.255/8
11.172.16.0.0/16 ~ 172.31.255.255/16 16个地址用于内部
192.168.0.0/24 ~ 192.168.255.255/24 256个地址用于内部
划分后的最大子网络的IP范围为: 10.100.222.1-10.100.223.255
给CentOS6 eth0 网 卡 , 分 别 设 置 三 个 IP 地 址 :10.0.0.200/8,172.18.0.200/16,192.168.0.200/24,请写出步骤
临时配置:
ifconfig eth0:0 10.0.0.200 netmask 255.0.0.0 up
ifconfig eth0:1 172.18.0.200 netmask 255.255.255.0 up
ifconfig eth0:2 192.168.0.200 netmask 255.255.255.0 up
永久生效:
vim /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.0.200
PREFIX=8
vim /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:1
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.18.0.200
PREFIX=16
vim /etc/sysconfig/network-scripts/ifcfg-eth0:2
DEVICE=eth0:2
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.200
PREFIX=24
在 CentOS6 中,误删除/boot 下全部文件后没法启动,写出恢复的详细步骤。
救援模式进入系统
chroot /mnt/sysimage
mount /dev/sr0 /mnt
rpm -ivh /mnt/Packages/kernel-2.6.32-696.el6.x86_64.rpm --force
grub-install /dev/sda
手写/boot/grub/grub.conf
default =0
timeout=5
root (hd0,0)
title CentOS 6.9
kernel /vmlinuz-2.6.32-696.el6.x86_64 root=/dev/sda2
init initramfs-2.6.32-696.el6.x86_64.img
退出重启
快速查找/root目录中大于2M的文本,并将文件中的magedu,换成www.magedu.com
find /root --size +2M -type f -exec sed -i 's/magedu/www.magedu.com/g' {} \;
若系统检测到***用root用户登陆了系统,如何将***所登陆的终端杀死,并当即对root用户修改密码。 root用户执行who查看登陆的终端信息(TERMINAL) ps -t |grep TERMINAL查看终端的进程号 kill -9 PID按终端的进程号号杀掉异常的终端进程 echo xxxx |passwd --stdin rootxxxx为新的密码 简述CentOS6开机启动流程 post–mbr grub 1stage–stage1.5–stage 2 /boot/grub—/boot/grub/grub.conf —kernel /vmlinuz.XXX root=— /boot/initramfs |/boot/initrd.XX.img —/sbin/init –/etc/inittab —/etc/rc.d/rc.sysinit(/etc/fstab) —/etc/rc5.d/K,S —/etc/rc.d/rc.local –login POST加电自检 引导加载器bootloader bootloader的引导程序GRUB的一部分放在MBR中 引导加载器程序GRUB grub 1.5阶段和2阶段 加载内核模块 先加载vmliuz内核,而后加载initramfs文件initd.img(里面都是预加载用到的的模块) 运行init,挂载硬盘和启动程序 运行init程序,init去读inittab启动模式,读取/etc/rc.d/rc.sysinit(里面有硬盘的挂载),找到相应模式对应的程序启动脚本,好比在5模式,去/etc/rc5.d里按顺序启动程序 sbin/init –/etc/inittab —/etc/rc.d/rc.sysinit(/etc/fstab) —/etc/rc5.d —/etc/rc.d/rc.local 登陆
Linux现链接一个新的存储(如/dev/sdb,容量为10T)一人应用程序须要在/data目录使用此存储的100G的存储空间,若作成LVM须要哪些步骤,请描述
#让服务器识别硬盘
echo '- - -' /sys/class/scsi_host/host2/scan
#lsblk能够看到硬盘
lsblk
lvm建立过程:
pvcreate /dev/sdb
vgcreate vg1 /dev/sdb
lvcreate -L 100G -n lv1 vg1
mkfs.ext4 /dev/vg1/lv1
mkdir /data
mount /dev/vg1/lv1 /data
若是要加到fstab里设成开机启动:
echo "/dev/vg1/lv1 /data ext4 defaults 0 0" >> /etc/fstab
修改上述网站的http 端口为9527 ,并为之增长SELinux 端口标签。 sed -i.bak 's/Listen\ 80/Listen\ 9527/g' /etc/httpd/conf/httpd.conf # 修改端口为9527 semanage port -l| grep http_port_t # SELinux策略里没有9527端口 semanage port -a -t http_port_t -p tcp 9527 # 添加9527端口 semanage port -l| grep http_port_t # 再次查看有了 查看crond进程打开了哪些文件 lsof -c crond|grep REG|tr -s " " |cut -d" " -f9
请完成如下操做
1)查询file.txt文件里第一列数据数值之和(字段以&符号分隔)
2)查询Hie.txt第7行以前添加一行,内容为”#注释”
3)打印出file.txt文件第6到第10行
awk -F'&' 'NR==1 {for (i=1;i<=NF;i++){sum+=$i};print sum}' file.txt
sed -i.bak '7i/#注释' Hie.txt
awk 'NR >=6 && NR<=10' file.txt
编写脚本,利用变量RANDOM生成10个随机数字,输出这10个数字,并显示其中的最大值和最小值,用两种方法实现
一、for i in seq 0 9
;do
array[$i]=$RANDOM
echo ${array[$i]}
done
echo "the min number:"
echo ${array[]}|awk -v RS=' ' -v ORS="\n" '{print $0}'|sort -n|grep -v '^$'|head -1
echo "the max number:"
echo ${array[]}|awk -v RS=' ' -v ORS="\n" '{print $0}'|sort -n|grep -v '^$'|tail -1
二、for i in seq 10
;do
j=$RANDOM
echo $j
if [ $i -eq 1 ];then
max=$j
min=$j
else
if [ $j -ge $max ];then
max=$j
fi
if [ $j -le $min ];then
min=$j
fi
fi
done
echo max number is $max
echo min number is $min
复制/etc/ssh/sshd_config 到/tmp/中并改名为sshd_config.bak。将/tmp/sshd_config.bak文件中全部以非#号开头与包含空白字符的行保存至/tmp/sshd_config中。 cp /etc/ssh/sshd_config /tmp/sshd_config.bak cat /tmp/sshd_config.bak |grep "^[^#]"|grep "^[^[:space:]*$]"
导航命令:% 括号匹配 插入命令: i 在当前位置生前插入、I 在当前行首插入、a 在当前位置后插入、A 在当前行尾插入、o 在当前行以后插入一行、O 在当前行以前插入一行 查找命令:/text 查找text,按n健查找下一个,按N健查找前一个。 ?text 查找text,反向查找,按n健查找下一个,按N健查找前一个。 替换命令:ra 将当前字符替换为a,当期字符即光标所在字符。 s/old/new/ 用old替换new,替换当前行的第一个匹配 %s/old/new/ 用old替换new,替换全部行的第一个匹配 移动命令:^ 移动到本行第一个非空白字符上。 0(数字0)移动到本行第一个字符上, <HOME> 移动到本行第一个字符。同0键。 $ 移动到行尾 gg 移动到文件头。 = [[ G(shift + g) 移动到文件尾。 = ]] 跳到指定行,冒号+行号,回车,好比跳到240行就是 :240回车。另外一个方法是行号+G,好比230G跳到230行。 Ctrl + e 向下滚动一行 Ctrl + y 向上滚动一行 Ctrl + d 向下滚动半屏 Ctrl + u 向上滚动半屏 Ctrl + f 向下滚动一屏 Ctrl + b 向上滚动一屏 x 删除当前字符 3x 删除当前光标开始向后三个字符 X 删除当前字符的前一个字符。X=dh dl 删除当前字符, dl=x dh 删除前一个字符 dd 删除当前行 dj 删除上一行 dk 删除下一行 10d 删除当前行开始的10行。 D 删除当前字符至行尾。D=d$ d$ 删除当前字符以后的全部字符(本行) 1,10d 删除1-10行 11,$d 删除11行及之后全部的行 删除全文:光标放置文首,:.,$d 拷贝粘贴:ddp交换当前行和其下一行 xp交换当前字符和其后一个字符
MYSQL部分
A.并发控制 1.共享锁(shared lock,读锁):共享的,相互不阻塞的 2.排他锁(exclusive lock,写锁):排他的,一个写锁会阻塞其余的写锁和读锁 B.事务 1.事务ACID * 原子性(atomicity)一个事务必须被视为一个不可分割的最小工做单元,整个事务中全部操做要么所有提交成功,要么所有失败回滚,对于一个事务来讲,不可能只执行其中的一部分操做 * 一致性(consistency)数据库老是从一个一致性的状态转换到另一个一致性的状态 * 隔离性(isolation)一个事务所作的修改在最终提交之前,对其余事务是不可见的 * 持久性(durability)一旦事务提交,则其所作的修改就会永久保存到数据库中 2.四种隔离级别 * READ UNCOMMITTED(未提交读),事务中的修改,即便没有提交,对其余事务也都是可见的,事务能够读取未提交的数据,也被称为脏读(Dirty Read),这个级别会致使不少问题 * READ COMMITTED(提交读),大多数数据库系统的默认隔离级别,一个事务开始时,只能“看见”已经提交的事务所作的修改,一个事务从开始直到提交以前,所作的任何修改对其余事务都是不可见的,也叫不可重复读(nonrepeatable read),有可能出现幻读(Phantom Read),指的是当某个事务在读取某个范围内的记录时,另一个事务又在该范围内插入了新的记录,当以前的事务再次读取该范围的记录时,会产生幻行(Phantom Row) * REPEATABLE READ(可重复读),经过InnoDB和XtraDB存储引擎,是MySQL的默认事务隔离级别 * SERIALIZABLE(可串行化)最高级别,经过强制事务串行执行,避免了幻读问题,会在读取的每一行数据上都加锁,可能致使大量的超时和锁争用的问题 3.死锁:指两个或多个事务在同一资源上相互占用,并请求锁定对方占用的资源,从而致使恶性循环的现象 4.事务日志:存储引擎在修改表的数据时只须要修改其内存拷贝,再把该修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改的数据自己持久到磁盘。事务日志持久之后,内存中被修改的数据在后台能够慢慢地刷回到磁盘,称为预写式日志(Write-Ahead Logging) A.索引基础 1.索引能够包含一个或多个列的值,若是索引包含多个列,那么列的顺序也十分重要,由于MySQL只能高效地使用索引的最左前缀列 2.ORM工具可以产生符合逻辑的、合法的查询,除非只是生成很是基本的查询,不然它很难生成适合索引的查询 3.在MySQL中,索引是在存储引擎层而不是服务器层实现的,因此,并无统一的索引标准:不一样存储引擎的索引的工做方式并不同,也不是全部的存储引擎都支持全部类型的索引 4.B-Tree意味着全部的值都是按顺序存储的,而且每个叶子页到根的距离相同,可以加快访问数据的速度,从索引的根节点开始进行搜索,适用于全键值、键值范围或键前缀查找 B.索引的优势 1.三个优势: * 索引大大减小了服务器须要扫描的数据量 * 索引能够帮助服务器避免排序和临时表 * 索引能够将随机I/O变为顺序I/O 查询执行路径 * 客户端发送一条查询给服务器 * 服务器先检查查询缓存,若是命中则马上返回,不然进入下一阶段 * 服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划 * MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询 * 将结果返回给客户端 B.视图 1.视图自己是一个虚拟表,不存听任何数据,返回的数据是MySQL从其余表中生成的 2.MySQL使用两种算法:合并算法(MERGE)和临时表算法(TEMPTABLE),会尽量地使用合并算法 3.若是视图中包含GROUP BY、DISTINCT、任何聚合函数、UNION、子查询等,只要没法在原表记录和视图记录中创建一一映射的场景中,MySQL都将使用临时表算法来实现视图 4.可更新视图(updatable view)是指能够经过更新这个视图来更新视图涉及的相关表,CHECK OPTION表示任何经过视图更新的行,都必须符合视图自己的WHERE条件定义 5.在重构schema的时候可使用视图,使得在修改视图底层表结构的时候,应用代码还可能继续不报错运行 6.MySQL中不支持物化视图(指将视图结果数据存放在一个能够查看的表中,并按期从原始表中刷新数据到这个表中) 7.不会保存视图定义的原始SQL语句
http协议经常使用的状态码 200: 成功,请求数据经过响应报文的entity-body部分发送;OK 301: 请求的URL指向的资源已经被删除;但在响应报文中经过首部Location指明源如今所处的新位置;Moved Permanently 302: 响应报文Location指明资源临时新位置 Moved Temporarily 304: 客户端发出了条件式请求,但服务器上的资源不曾发生改变,则经过响应此状态码通知客户端;Not Modified 401: 须要输入帐号和密码认证方能访问资源;Unauthorized 403: 请求被禁止;Forbidden 404: 服务器没法找到客户端请求的资源;Not Found 500: 服务器内部错误;Internal Server Error 502: 代理服务器从后端服务器收到了一条伪响应,如没法链接到网关;Bad Gate 503: 服务不可用,临时服务器维护或过载,服务器没法处理请求 504: 网关超时