虚拟机中系统的常用命令
2023-05-23 17:43:50 0 举报
AI智能生成
仅供学习参考
作者其他创作
大纲/内容
编写脚本
执行脚本的几种方式:<br>(执行脚本,一般来说需要给脚本添加执行权限,然后可以通过绝对路劲执行,如果想直接通过脚本名运行,需要将脚本添加到环境变量下。但是在没有x权限的情况下,可以使用bash或.(点) 脚本名(绝对或相对路径)来执行)<br>1.[root@zh shell]# bash file1.sh (或者是sh file1.sh) 2. [root@server shell]# . hi.sh <br>3.给文件添加执行权限:[root@server shell]# chmod +x ./hi.sh [root@server shell]# ./hi.sh hi,world<br>
如果将脚本添加至环境变量下,则不需要绝对路径,只需脚本名即可执行<br>echo $PATH<br>脚本不以.sh为后缀,则开始时不变色,后面再打开变色(vim有语法高亮)<br>在环境变量中找脚本的路径(可以cp hi.sh 到 /bin/下 然后再查看)在环境变量中找脚本的路径(可以cp hi.sh 到 /bin/下 然后再查看)<br>
对特殊字符加引号:单引号 双引号<br>\:转意<br>单引号:全屏蔽<br>双引号:部分屏蔽 双引号不屏蔽$符:<br>$[算数表达式] 例如:echo $[1+2] 输出结果为3 echo $[1/2] (向下取整) 结果为0 echo $[2**3] (2的3次方)<br>计算小数:bc<br>使用变量:声明:变量名=值 (不是全局的) 声明变量的规范:(变量的命名:字母、数字、下划线,且不以数字开头)<br>命令替换:`` 反引号 在Linux中起着命令替换的作用。命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置 <br>$()<br>$$:的作用是显示当前程序的进程ID号码<br>
输出软件包的安装时间:<br>for package in $(rpm -qa | grep kernel)<br>> do<br>> echo "$package was installed on $(date -d @$(rpm -q --qf "%{INSTALLTIME}\n" $package))"<br>> done<br>分解成多个步骤理解为:<br>1.rpm -qa | grep kernel 2. rpm -q --qf "%{INSTALLTIME}\n" kernel-3.10.0-693.el7.x86_64<br>3. date -d @1535531716
关于命令seq 的使用
例子: (使用此命令时必须连带 ``反引号一同使用)<br>for i in `seq 5`; do echo $i; done<br>1<br>2<br>3<br>4<br>5<br> for i in `seq 1 2 10`<br>> do<br>> echo $i<br>> done<br>1<br>3<br>5<br>7<br>9<br>
使用BASH特殊变量:$1,$2,$*,$@,$#,$?<br>$# 传递到脚本的参数个数<br>$* 以一个单字符串显示所有向脚本传递的参数。<br>如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。<br>$$ 脚本运行的当前进程ID号<br>$! 后台运行的最后一个进程的ID号<br>$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。<br>如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 <br>$- 显示Shell使用的当前选项,与set命令功能相同。<br>$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
Read:读取键盘输入赋值给变量:<br>例子:[root@server shell]# cat ./test9.sh<br>#!/bin/bash<br>read -p "请输入一个文件名:" filename<br>A=`find / -name "$filename" -type f | wc -l `<br>if [ $A -eq 0 ];then<br> echo "$filename 不存在"<br>else<br> echo "$filename 存在"<br>fi
tr 命令
小写转换为大写字符
例子:echo abcd | tr 'a-z' 'A-Z'<br> ABCD<br>
用于替换文本文件中的字符
评估代码
评估退出代码 cut
例子:cat /etc/passwd | cut -d: -f7<br> -d : (为分割符号) -f (为第几列)<br>用逗号表示分隔符看几行输出内容<br>例如:cat /etc/passwd | cut -d: -f1,7<br>
评估错误代码
例子:[root@server shell]# cat test11.sh<br>#! /bin/bash<br>read -p "please input a number: " num<br>if [ $num -gt 10 ];then<br> echo "true"<br>else <br> echo "false"<br> exit 2<br>fi<br>[root@server shell]# ./test11.sh <br>please input a number: 100<br>true<br>[root@server shell]# echo $?<br>0<br>[root@server shell]# ./test11.sh <br>please input a number: 1<br>false<br>[root@server shell]# echo $?<br>2
逻辑AND(&&)和OR(||)<br>&&:有0为零,全1为1<br>||:有1为1,全0为0
if [ 10 -eq 8 ] && [ 5 -gt 4 ] ---> if [ 10 -eq 8 -a 5 -gt 4 ]
if [ 10 -eq 8 ] || [ 5 -gt 4 ] ---> if [ 10 -eq 8 -o 5 -gt 4 ]
循环
if循环
使用调节结构:<br>If 条件;then<br> 命令<br> 。。。<br>fi<br>条件句并不一定非得是【】这种判断,只要条件句有真假两种可能就行。<br>
for循环
迭代for循环:<br>For 变量名 in 值列表<br>do<br> 命令<br>。。。<br>done<br>for 变量名 in 值变量; do 命令; done (等同于上面的写法)<br>
case 循环
Case:多分支结构(所有的case语句都可以用if来写)<br>case 值 in<br>值1)<br>命令<br>。。。<br>;;<br>值2)<br>命令<br>。。。<br>;;<br>esac
While循环:
While 条件<br>do<br> 命令<br> ……<br>done
死循环:<br>1.While true<br>2.While :
退出脚本或跳出循环:<br>这两次跳出循环的时候看清楚echo $i 的位置 位置不一样则输出的结果也不一样<br>
Break:跳出循环<br>例子:[root@server shell]# cat test15.sh<br>#! /bin/bash<br>for i in {1..10}<br>do<br> if [ $i -eq 3 ];then <br> break<br> fi<br> echo $i<br>done<br>echo "finish"<br>[root@server shell]# ./test15.sh <br>1<br>2<br>finish<br>
Continue:跳过本次循环<br>例子:[root@server shell]# cat test15.sh<br>#! /bin/bash<br>for i in {1..10}<br>do<br> echo $i<br> if [ $i -eq 3 ];then <br> continue<br> fi<br>done<br>echo "finish"<br>[root@server shell]# <br>[root@server shell]# ./test15.sh <br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>finish<br>
exit 直接退出执行:<br>例子:[root@server shell]# cat test15.sh<br>#! /bin/bash<br>for i in {1..10}<br>do<br> if [ $i -eq 3 ];then <br> exit<br> fi<br> echo $i<br>done<br>echo "finish"<br>[root@server shell]# ./test15.sh <br>1<br>2<br>
重要:去查sed以及awk的用法
关于systemd的一些命令
管理临时文件 systemd-tmpfiles
配置文件的优先级(从上往下)<br>/etc/tmpfiles.d/*.conf<br>/run/tmpfiles.d/*.conf<br>/usr/lib/tmpfiles.d/*.conf<br>案例:[root@server ~]# vim /etc/tmpfiles.d/gallifrey.conf<br>[root@server ~]# cat /etc/tmpfiles.d/gallifrey.conf<br>d /run/gallifrey 0700 root root 30s<br>
systemd-analyze命令用于查看启动耗时。
查看系统启动耗时 :systemd-analyze
查看每个服务的启动耗时 :systemd-analyze blame
显示瀑布状的系统启动过程流 :systemd-analyze critical-chain
显示指定服务的启动流 :systemd-analyze critical-chain atd.service
管理linux进程的优先级: 进程优先级和nice概念:<br>Nice值:40个级别 值越小,优先级越高, -20-19<br>使用nice和renice影响进程优先级:<br>一般来说,普通进程默认的nice值为0<br>使用renice: renice -n -7 45620 45620 (进程 ID) 旧优先级为 15,新优先级为 -7<br>Top中修改nice值:按r,输入pid和新的nice值<br>
使用访问控制列表控制对文件的访问
ACL允许细化权限:除了属主,属组,其他人外,还可以为指定的用户设置权限。<br>(如果.(点) 变成 + 则表示有关联的ACL权限)<br>设置多个指定权限,以逗号分隔<br>
查看文件权限相关信息: getfacl 文件名<br>Setfacl更改常规ACL文件权限:<br>(-R:递归) (删除指定的acl 选项为:-x ) (删除所有的acl : -b)(删除默认ACL:-k)<br>setfacl -m u:finduser:r-- find1 (用户必须是存在的用户)<br>增加指定组的权限 :setfacl -m g:findgroup:rw find1<br>(改其他人的权限,u::acl属主,g::acl属组) setfacl -m o::w find1 中间不能加用户<br>控制默认ACL权限:添加默认权限:setfacl -m d:u:student:r finddir/ 删除默认ACL:-k 例如:setfacl -k finddir/
测试X的作用: (如果给的权限是X:针对文件则不给x权限,针对目录则给x权限)<br> setfacl -m u:student:rX find2<br>
配置shell环境:<br>env 查看环境变量<br>以及别名的知识<br>
set | grep A=100 (通过set查看变量)<br>echo $A (也能查看变量值)<br>
声明环境变量:export<br>例如:export test=10000<br>取消变量 unset <br>例子:unset test<br>
Alias:别名 (给命令定义别名)<br>alias A='systemctl status sshd' (这个是临时定义别名)<br>别名持久化,用户将别名写进~/.bashrc (/etc/bashrc)<br>配置完永久别名以后,不是当时生效,需要刷新<br>source 文件名 或者是重启 才能生效<br>
查看别名:<br>例子:Type cp 查看cp的别名<br>\cp 取消cp的别名
使用函数: 提示符的变量<br>例如:echo $PS2 结果为><br>shell中函数的定义格式如下: <br>[ function ] funname [()]<br>{<br> action;<br> [return int;]<br>}<br>1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。 <br>2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255) <br> <br>Shell 函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接调取即可。<br>和其它编程语言不同的是,Shell 函数在定义时不能指明参数,但是在调用时却可以传递参数,并且给它传递什么参数它就接收什么参数。<br>例子:[root@server shell]# ./test17.sh<br>www.baidu.com<br>[root@server shell]# cat ./test17.sh<br>#!/bin/bash<br>url(){<br> echo www.baidu.com<br>}<br>url<br>
查看路由信息
查看默认网关: route -n<br> netstat -nr<br>也是查看默认网关,但是格式不一样: IP route<br>
查看虚拟IP 的信息:<br>IP a s eth0(网卡名)<br>
linux中cut、printf、awk、sed以及tr命令
cut [选项] 文件名<br>用于按列提取文本字符<br>-d自定义分隔符,默认为制表符<br>-f 与-d一起使用,指定显示那个区域,指定的提取列信息<br>例子:cat /etc/passwd | cut -d: -f1,7<br>cut是由局限性的,若是数据中间有好多的空格,而你又是按照空格来切分的,这个时候会有好多的空白数据,但是awk可以解决这个问题。<br>
printf '输出类型输出格式' 输出内容<br>使用案例:printf '%s %s %s\n' 1 2 3 4 5 6<br> 1 2 3<br> 4 5 6<br>
AWK是一种处理文本文件的语言,是一个强大的文本分析工具<br>语法: awk 选项 'commands' testfiles<br>-F 定义字段分隔符,默认分隔符为连续空格或制表符 。 用$1,$2,$3等顺序表示files中每行以间隔符号分隔的各列不同域<br> -v 定义变更并赋值,也可以借用次方式从shell变量中引入变量<br>例子:awk -F":" '{print $1,$7}' testfile 以冒号作为分隔符,打印第1和第7个字段<br>awk -F"[:/]" '{print $1,$7}' testfile 以冒号或斜杠 / 作为分隔符,打印第1第7个字段<br>awk -F":/" '{print $1,$7}' testfile 以冒号加斜杠 “:/”整体作为分隔符<br>
Linux sed命令是利用script来处理文本文件。sed可依照script的指令,来处理、编辑文本文件。<br>语法 : sed [-hnV][-e<script>][-f<script文件>][文本文件] <br> a : 新增 c:取代 d: 删除 i:插入<br>例子:sed -n '2p' student.txt // 查看第二行<br>sed -i '1d' a.txt // 删除第一行 sed '4s/78/98/g' // 把4列的78换成98<br>sed -e '1s/xxx//g;2s/xxx//g' // 把第一列的xxx和第二列的xxx替换为空<br>sed -i -e '1s/xxx//g;2s/xxx//g' // 把第一列的xxx和第二列的xxx替换为空,操作到文件<br>
tr: 小写转换为大写:<br>例子:echo abcd | tr 'a-z' 'A-Z' ABCD<br>
loginctl命令
loginctl命令用于查看当前登陆的用户。
列出当前session :loginctl list-sessions
列出当前登录用户 :loginctl list-users
列出显示指定用户的信息 :loginctl show-user root
执行lsmod命令后会列出所有已载入系统的模块
DAS:直连附加存储 direct-attached-storage<br>NAS:网络附加存储 network-attached-storage nfs samba<br>SAN:存储区域网络 storage area network iscsi
netstat命令
-n 进行使用域名解析功能
-c 每隔一段时间就会执行netstat指令
-r 显示路由表信息
-l 仅仅只显示监听选项
-t 显示TCP相关的选项<br>-x 显示UNIX的相关选项<br>-u 显示UDP的相关选项<br>
-p 显示与连接有关的程序名和进程的PID
gedit命令
在命令行输入,可以打开一个文本
chattr命令 、lsattr命令、rootkit命令
Linux chattr命令用于改变文件属性。<br>chattr命令不能保护/、/dev、/tmp、/var等目录。<br>
-R 递归处理,将指定目录下的所有文件及子目录一并处理。<br>+<属性> 开启文件或目录的该项属性。<br>-<属性> 关闭文件或目录的该项属性。<br>=<属性> 指定文件或目录的该项属性<br>
Linux lsattr命令用于显示文件属性。<br>用chattr执行改变文件或目录的属性,可执行lsattr指令查询其属性。<br>
chkrootkit是一个Linux系统下查找并检测rootkit后门的工具<br>RKHunter是一款专业的检测系统是否感染rootkit的工具,它通过执行一系列的脚本来确认服务器是否已经感染rootkit。
显示系统启动时间的命令:uptime
alias命令
1.通过命令提示符直接设置 alias adeal='pwd' //以上命令的功能是将命令 adeal临时设置为 pwd 相等<br>2.alias //查看所有命令列表 不输入任何参数就可以查看所有别名命令列表<br>3.//通过编辑bashrc文件永久设置alias别名 ~./bashrc<br>4.清理alias设置的别名 <1>清理刚刚设置的别名 unalias adeal <2>清理所有设置的别名操作 alias -a
fsck命令
Linux fsck命令用于 检查与修复 Linux 档案系统,可以同时检查一个或多个 Linux 档案系统。
例如:检查 msdos 档案系统的 /dev/hda5 是否正常,如果有异常便自动修复 :<br>fsck -t msdos -a /dev/hda5<br>参数的意思 -a : 如果检查有错则自动修复<br> -t :给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数
write命令
通过write指令可传递信息给另一位登入系统的用户,当输入完毕后,键入EOF表示信息结束,write指令就会将信息传给对方。如果接收信息的用户不只登入本地主机一次,你可以指定 接收信息的终端机编号。
格式: write user [ttyname] ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息 <br>例子: 传讯息给 Rollaend,此时 Rollaend 只有一个连线 : write Rollaend 接下来就是将讯息打上去,结束请按 ctrl+c <br>传讯息给 Rollaend,Rollaend 的连线有 pts/2,pts/3 : write Rollaend pts/2 接下来就是将讯息打上去,结束请按 ctrl+c <br>若对方设定 mesg n,则此时讯席将无法传给对方,<br>
chkconfig命令
主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
用法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]<br>使用范例:chkconfig --list #列出所有的系统服务 chkconfig --add httpd #增加httpd服务<br>chkconfig --del httpd #删除httpd服务 chkconfig --level httpd 2345 on #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态<br>chkconfig --list mysqld #列出mysqld服务设置情况 chkconfig mysqld on #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级 <br>chkconfig --level 35 mysqld on #设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭<br>
如何增加一个服务:1.服务脚本必须存放在/etc/ini.d/目录下;<br>2.chkconfig --add servicename 在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;<br>3.chkconfig --level 35 mysqld on 修改服务的默认启动等级。<br>4.设置开机自启动 chkconfig mysql on chkconfig --list | grep mysql<br>
nslookup命令:在Linux系统中,测试DFS服务器是否能够正确进行域名解析的客户端命令,使用nslookup命令
分支主题
cp 命令
复制文件<br>
-r 复制目录
例如: cp -r /etc/syscofig /var/log /dev/cdrom /home cp 默认将文件内容或目录复制到最后一个地址
-f 强制复制文件 如果有同名的文件不询问直接复制
-rf 强制复制目录 不询问直接复制
-p 保留复制文件的权限
-i 拷贝,同名文件存在时,输出yes/no执行
mv 命令
移动文件
这个命令可以给文件或目录更改名称(即重命名操作)<br>
ls命令:查看
-a 查看隐藏文件(包括所有文件)
-R 递归显示文件
-h 显示文件的大小
-d ~+ 显示当前目录路径(相当于pwd)
touch命令
创建文件
mkdir命令
创建目录
-p 递归创建文件
例如:创建目录aaa/bbb 就用到了mkdir -p aaa/bbb
新创建的文件默认是644<br>(root)新创建的目录默认是755 (普通用户775)
wc命令
-l 查看文件行数 (wc --lines)显示的相同
-c 查看文件字符数
-w 查看文件单词数
cat 命令
只能查看全部文件 不能查看目录
pwd命令:查看当前所在文件的路径(绝对路径) 相当于ls -d ~+
head 命令
能查看文件的内容 (默认情况下显示10行)
-n + 数字 查看文件从开头开始的前几行内容
例子:<br>显示/etc/passwd中的第6-10行:<br>[root@server ~]# cat /etc/passwd | head -10 | tail -5<br>
tail 命令
能查看文件内容 和head命令差别不大用法一样 (默认情况下显示10行)
-n +数字 查看文件从尾部开始的后几行内容
利用tail监控系统日志文件:<br>用户的验证过程存放在: tail -f /var/log/secure <br>查看用户登录成功的信息存放在:/var/log/wtmp<br>
which 命令
查看命令所在的地址 (绝对路径命令所在地)
whereis 命令
查看命令所在的地址,也可以查看到命令在man帮助的第几章
rm 命令
删除命令
-r 删除目录及其内容
-rf 强制删除文件及其内容
rmdir 命令
删除命令
删除没有文件的空目录 <br>
在用法上边相当于 rm -r
-p 递归删除空目录 如果子目录删除后父目录为空的话一同删除
cd 命令
cd / 将返回到根目录下
cd ~ 将返回到用户主目录下(如果是root用户则为root )
cd ../ (cd .. 用法上边一样) 返回当前所在位置的上一层目录
cd . 查看当前所在位置
cd - 即在两个目录之间相互切换 (例如: 我当前在/etc/sysconfig 然后我进入了cd /var/log 文件 那么我就可以用cd- 在两个目录之间相互切换)
more 命令
显示文本文件的内容,一次显示一屏,满屏后停下来,可按键继续
可设置每屏显示的行数 more -10 则为每屏幕显示10行内容
less 命令
和more命令用法差不多,分屏显示文件内容,允许用户向前向后浏览内容
whatis +命令
可以查看到命令所在man帮助的第几页
命令的用法查找<br>
man 帮助命令
可以查看命令的基本选项及用法
空格键可向下翻动一个屏幕<br>
man hier 查看目录描述
命令 --help
可以查看到命令的基本用法
info 命令
信息的查找
date 命令
+%R 显示当前时间
+%x 显示当前日期(年月日)
+%j 显示当前天数在一年的多少天
+%Y-%m-%d %H:%M:%S 显示当前日期及时间(年月日时分秒)
-s 更改当前时间
+%T 显示当前时间 等同于 +%H:%M:%S
+%r 以时间 /AM 的形式显示 例如 8:0:2 /AM
passwd 命令
修改密码 <br>
root用户能修改所有人的密码 (例如: 在root模式下 passwd 用户名 可直接修改密码 不用输入原始密码)
普通用户修改密码 需要自己原先的原始密码
--stdin 允许通过标准输入修改用户密码
-l 锁定用户登陆<br>-u 解锁用户登陆<br>-s 显示用户的密码是否被锁定,以及密码所采用的加密算法的名称<br>
-d 使用户可以使用空密码登陆<br>-e 强制用户在下一次登陆的时候修改密码<br>
可以为新创建的用户设置新密码
file 命令:查看文本的类型
history 命令
查看当前所打命令的历史记录
!number 可以显示你所使用的命令
!string 显示最近字符串开头的命令
-c 清除历史记录 但是文件中还存在
永久清除 默认存储1000条 在/root/.bash_history文件中<br>
命令替换
允许命令的输出替换命令的本身<br>
反引号模式: ( 例如: echo today is 'date +%A' ) 只能单层使用不能嵌套<br>
$() 模式:(例如: echo today is $(date +%M) minutes past $(date +%1%p) ) 可以多层嵌套
host=$(hostname);echo $host 显示当前用户名
useradd 命令
创建的用户必须设置密码才能登陆<br>选项基本上和usermod相同<br>
创建的用户存放在/etc/passwd中
属组并不一定是基本组。默认情况下,一个用户创建了一个文件,这个文件归这个用户的基本组所有。<br>一个用户可以属于多个组。<br>
-M 不指定家目录
-N 不创建与用户同名的基本组
usermod 命令
-d 指定用户所在的主目录
-L 锁定用户 (等同于passwd -l)
-U 解锁用户 (等同于passwd -u)
-s 指定登录用户的shell (若为/bin/sh 则能登录 /sbin/nologin 下的则不能登录)
-u 指定用户的UID
-g 为用户指定属组
-G 为用户指定附加组 (若已加入附加组则 -aG 可再添加另外一个附加组)
-e 修改用户账户过期时间
passwd -S 用户名(例如:test1) 锁定用户的密码
-d -m (连用) 可重新指定用户的家目录并把就的知识移动过去
用户锁定之后,root用户依然可以直接切换过去,普通用户不行。
成批添加用户的命令是newuser
userdel 命令
删除用户的信息从/etc/passwd中删除,但默认情况下主目录不变
-r 删除用户及主目录信息 Userdel –r 用户名 (删除家目录) <br>
-f 强制删除用户 Userdel 用户名 (不删除家目录)
groupadd 命令
创建组命令 如果不添加命令则从/etc/login.defs文件下选择一个可用的GID使用 (在这个配置文件中可以更改用户每多少天更改密码的信息)
-r 将自主选择配置中可用的GID使用
id 命令
可以显示当前用户的信息
id 用户名 可以显示想要查找的指定用户名信息
groupdel
删除组用户 (如果这个组是用户的基本组,则不能删除)
ps 命令
ps aux 显示所有进程
ps axo 显示指定进程信息(例如 ps axo pid)
ps -j 显示当前作业信息 (在终端运行或者是在后台运行)
ps -ef 相似的UNIX语法来显示所有进程
ps -C 查看PID<br>pidof 查看指定服务的PID值<br>
ps -up 进程号(例如:1122) 查看指定进程
UID是用户ID,PID是进程ID,PPID是父进程ID
jobs 命令
查看当前运行的进程<br>
jobs -l 任务声明(运行状态)
jobs -p 查看执行完的任务
fg 命令
fg %数字 (例如: fg %1) 将后台的作业信息带到前台来<br>
bg %数字 命令
在后台重新启动进程
将进程放入后台:&
groupmod
修改用户组信息<br>
-n 可修改用户的名称 (例如:groupmod –n 新组名 原组名)
-g 可指定用户组的GID
gpasswd
为组添加用户<br>使用格式: gpasswd 选项 (用户) 组名<br>
-a (例如: gpasswd -a 1 user 将用户1加入user组)
-d 将用户退出组 (将1退出user组)
-A 指定管理员<br>-r 删除密码
添加用户到某一个组 可以使用 usermod -G group_name user_name 这个命令可以添加一个用户到指定的组,但是以前添加的组就会清空掉。
chmod 命令
修改文件或目录的权限<br>读(r)=4、写(w)=2、执行(x)=1<br>u:属主 g:属组 o:其他人 a:所有<br>
特殊权限:suid(4) sgid(2) t(1)<br>g+s:可以继承上级目录的属组<br>
**能不能删除目录中的文件看目录是否有写权限。**
新创建的文件默认是644<br>(root)新创建的目录默认是755 (普通用户775)
chgrp 命令
修改文件或目录所属组的权限<br>
-R 递归操作
chown 命令
修改文件或目录用户或组的权限
-R 递归创建
-v 详细显示工作过程
--reference=参考文件
在后台运行作业 sleep
使用信号控制进程的操作
kill 命令
kill -9 强制杀死某个指定PID的进程 <br>kill -9 -t 强制提出PID的进程<br>
查看系统支持的所有信号 kill -l
killall 命令<br>
可以杀死有关某个名称的服务的全部进程
pkill 命令
控制用户的所有进程
选项: -P 仅匹配给定列表中PPID的进程。<br> -U 仅匹配真实的用户ID在给定列表中的进程。<br> -u 仅匹配有效用户ID在给定列表中的进程<br> -x:仅认为进程其参数字符串或者执行文件名称正确匹配规定模式是匹配的进程。
子主题
Kill 后面加pid<br>Killall 后面加进程名
w 命令
可以查看登录系统的用户以及他们积累的活动
-f 选项时 远程用户在FROM列中显示其系统名称
pstree 命令
可以查看系统及单个用户的进程树
显示负载平均值的信息命令
top 动态查看
有关于top中的基本选项
-r 查看nice值<br>
-W 保存当前显示配置
uptime
w<br>
gnome-system-monitor 查看当前系统中进程运行的优先级
tar 命令
-cf 归档文件<br>
-tf 查看归档文件中的内容
-xf 解压归档文件
-v 详细显示
-z{为gzip(.gz)} <br>-j{为 bzip2(.bz2) }<br>-J为 { xz(.xz)} 这些命令压缩
-p 测试P的作用,保留开头的/
-C 指定家目录
du -sh 查看文件大小
du -d 0 -h<br>du -sh 用法相同
du . 了解当前目录下还有多大空间
df -h 命令<br>和 fdisk -l 命令<br>
df 命令
-h 查看系统中光盘的挂载信息,只显示已挂载的光盘
-i 显示系统各个分区中inode(节点)的使用情况<br>
fdisk -l
查看全部磁盘的光盘信息
ssh 命令
以其他用户身份登录:<br>ssh 用户名@主机名或ip地址
配置免密登录: 可以交互式,也可以非交互式生成。 密钥对:公钥(加密),私钥(解密)<br>1.生成密钥对 [root@server ~]# ssh-keygen (一路回车)<br>2.2.拷贝公钥到要登录的主机 ssh-copy-id 192.168.99.172(要访问的主机的IP地址,也可以是主机名的那种的方法)<br>3.测试免密登录<br>
自定义ssh服务配置: 配置文件:<br> ssh_config:客户端<br> sshd_config:服务端<br>禁止其他用户登录的几种方法: 修改配置文件/etc/ssh/sshd_config<br>1.修改端口 2.禁止root远程登录 3.禁止密码登陆 4.禁止密码登陆,使用免密登录<br>5.限制ssh登录 通过配置hosts.allow和hosts.deny文件允许或禁止ssh或telnet操作 <br>(在配置文件下边加 (AllowUsers允许) 和 (DenyUsers 不允许) )<br>
显示ssh连接过程:<br>ssh -v IP地址 (v越多显示的越详细,一般打3个v就已经显示的很详细了,不用很多)
重定向和追加重定向的知识
重定向:> 会覆盖原先的内容<br>标准输入:stdin 0<br>标准输出:stdout 1<br>标准错误输出:stderr 2 <br>&>:标准输出和标准错误输出一起重定向
追加重定向: >> 不会覆盖原有的内容<br>
例子 : 输出重定向<br>[root@localhost ~]# echo '456<br>> 567<br>> 678' > a10.txt<br>
输入重定向是把文件直接导入到命令中<br>例子: a文件中有5行内容<br> wc -l < a (cat a | wc -l 显示结果相同)<br> 5<br>
管道符的作用是把前一个命令的输出当作是后一个命令的输入
tee命令
Linux tee命令用于读取标准输入的数据,并将其内容输出成文件<br>tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。<br>
tty命令
Linux tty命令用于显示终端机连接标准输入设备的文件名称。<br>在Linux操作系统中,所有外围设备都有其名称与代号,这些名称代号以特殊文件的类型存放于/dev目录下。你可以执行tty(teletypewriter)指令查询目前使用的终端机的文件名称。<br>
hostname 命令
修改主机名<br>显示当前主机的信息 : hostnamectl<br>
hostname 名称 临时修改
hostnamectl set-hostname 名称 永久修改
配置文件在 /etc/hostname 修改完配置文件后重启才能生效
自己查:如何实现用户第一次登陆需要修改密码 :chage –d 0 用户名(例如:username)<br>切换可以切换过去,但是要是从主界面登录必须使用root用户重置密码才可以进入<br>
umask 命令
如果umask的值有奇数,奇数位用7减(文件):<br>0023 ------》667-023 = 644<br>0025 ------》667-025 = 642
默认022<br> 0022 第一位表示的是默认的s权限的,一般用户用不到<br>
一般文件权限为644<br>目录权限为755<br>
systemctl 命令
systemctl -t help 列出单元类型<br>systemctl list-units --type=service 列出单元表中的服务状态<br>systemctl list-units --type=service –all 全部服务<br>systemctl list-unit-files --type=service 查看已启用和已禁用设备,也可选择限制单元类型<br>systemctl --failed --type=service 仅列出失败的服务
systemctl是systemd的主命令,用于管理系统和服务。<br>Systemd可以管理所有系统资源。不同的资源统称为Unit(单位),Unit一共分成12种。
如果修改了某个服务的配置文件,就要重新加载配置,然后重新启动,否则修改不会生效。<br>systemctl daemon-reload 或者是 systemctl restart httpd.service <br>
系统运行模式target相关命令
查看当前系统的所有Target :systemctl list-unit-files --type=target<br>查看一个 Target 包含的所有Unit :systemctl list-dependencies multi-user.target<br>查看启动时的默认Target : systemctl get-default<br>设置启动时的默认Target :systemctl set-default multi-user.target<br>切换Target时,默认不关闭前一个Target启动的进程,systemctl isolate命令改变这种行为,<br>关闭前一个Target里面所有不属于后一个Target的进程 :systemctl isolate multi-user.target<br>
mask 命令
屏蔽服务的命令 mask<br>unmask 命令可以解除命令屏蔽服务<br>
屏蔽了某一个服务以后 使用开启状态开启不了,除非解除屏蔽状态才可以<br>例子:[root@server ~]# systemctl stop sshd<br>[root@server ~]# systemctl mask sshd<br>Created symlink from /etc/systemd/system/sshd.service to /dev/null.<br>[root@server ~]# systemctl start sshd<br>Failed to start sshd.service: Unit is masked.<br>
journalctl 命令
通过systemd查看系统日志条目 来查找事件 (这个命令属于systemd下的分命令)
-o 详细过程<br>-b 显示本次系统启动时的日志文件<br>查看内核日志(不显示应用日志) :journalctl -k<br>-f 主动追踪当前正在编辑的日志,只要是不终止,会一直监视(同样的用法还有tail -f )<br>
-n 查看行数 (默认10行)
[root@client ~]# journalctl --since “YYYY-MM-DD hh:mm:ss” --until “YYYY-MM-DD hh:mm:ss”<br>--since:从什么时候开始<br>--until:到什么时候结束
-p 如err 仅列出优先级为err或者以上的日志条目<br> 日志条目的优先级,也可以使用数字查找(比如err 的等级为3)(注意电脑从0开始,日至最高的优先级为0,也是最严重的警告)<br>
简单排除尝试:<br>[root@client ~]# vim /etc/ssh/sshd_config <br>[root@client ~]# cat /etc/ssh/sshd_config | grep Port<br>Port -22<br>#GatewayPorts no<br>[root@client ~]# systemctl restart sshd<br>Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.<br>[root@client ~]# journalctl –xe ( 这个主要是用于报错后查看哪里出现了错误容易排查错误出现的位置)
查看指定用户的日志 : journalctl _UID=33 --since today<br>查看某个 Unit 的日志 : journalctl -u nginx.service --since today<br>
grep 命令
grep是一种强大的文本搜集工具,它能使正则表达式搜索文本,并把匹配的行打印出来<br>用于显示文本在执行关键字搜索并显示匹配的结果
-c 仅显示找到的行数
-i 忽略大小
-n 显示行号
-b 将可执行文件当作文本文件来搜索
-v 反向选择(仅列出没有关键词的行)
关于egrep的用法:<br>例子:cat /etc/chrony.conf | egrep 'aliyun|10.0.0.0|9'<br>server ntp1.aliyun.com iburst<br>#allow 192.168.0.0/16<br>allow 10.0.0.0/24<br>local stratum 9<br>
timedatectl 命令
设置本地时钟和时区<br>timedatectl命令用于查看当前系统时区设置。<br>
列出时区:[root@server ~]# timedatectl list-timezones<br>更改时区 : timedatectl set-timezone<br>更改时间:(时间同步的时候改不了) timedatectl set-time
查看系统同步是否开启 : timedatectl set-ntp 有true/flase两种
date -s 手动修改时间 (临时修改)
chronyc 命令
chronyc sources -v 查看当前时间的同步状态
ifconfig 命令
查看IP地址
可将网卡开启或关闭 也可临时修改网卡的IP地址(例如: ifconfig eth2 1.1.1.1 (临时修改))
ifconfig ens33 显示ens33这块网卡的连 ip addr show eth2 查看特定网卡eth2的开启状态 ip a s ens33 查看特定的ens33这个网卡的显示信息 ip link show ens33 只显示link这一部分 (相比较上边的显示的内容比较少)<br>查看路由信息 : ip route
查看默认网关 route -n netstat -nr<br>查看服务所占用的端口号信息 ss -anptul netstat -antpul<br>
查看dns相关信息在 /etc/resolv.conf
nmcli 命令
显示所有网卡的连接状态 nmcli device status 只显示连接中的网卡信息 nmcli connection show<br>查看开启状态 :nmcli device status
删除连接 nmcli connection delete 连接名(网卡名)
修改连接信息 (这种方法为在命令行直接修改配置网络信息)(还有一种方法就是在配置文件中手动修改内容) 还有一种方法就是使用图形化界面nmtui更改<br> 例子:nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.99.7/24 ipv4.gateway 192.168.99.2 ipv4.dns 192.168.99.2 connection.autoconnect yes<br>
启动网卡nmcli connection up ens33(网卡名)<br>关闭网卡 nmcli connection down 网卡名<br>
这个NetworkManager短语为网络管理员的意思<br> systemctl stop NetworkManager 将不能在使用nmcli 这个命令<br>
添加网卡 nmcli connection add type ethernet con-name ent1 ifname eth1<br> 连接名 设备名<br>
快速开启网卡的指令:ifup eth0<br>关闭: ifdown eth0
rsync 命令
在系统间安全的同步文件:rsync
常用选项 : -avz<br>同步删除 : rsync -av --delete<br>-n:执空 模拟运行<br>
rsync+inotify:实时同步,自己查
yum 源 和 rpm 源<br>yum 和 rpm 都可以安装软件包<br>只不过yum安装软件包时有依赖的包也会直接安装<br>
在挂载光盘的时候一般将gpgcheck=0 就不用导入数字签名了<br>导入数字签名 :rpm --import <br>查询命令所属的软件包: yum provides<br>
Yum命令:<br>[root@server customrepo]# yum repolist 显示已配置的源<br>[root@server customrepo]# yum makecache 缓存<br>[root@server customrepo]# yum clean all 清除缓存<br>[root@server customrepo]# yum list 列出所有的包<br>[root@server customrepo]# yum info httpd 查看软件包相关信息<br>[root@server ~]# yum search httpd 根据关键字查找软件包<br>[root@server ~]# yum search all "web server"<br>[root@server ~]# yum provides ab 可以根据命令或文件名查找对应的软件包
安装软件:yum -y install<br>升级软件:yum update –y<br>删除软件:yum remove 软件包名 (不建议加-y)
管理组包:yum groups list 列出组包 (或者是yum grouplist 命令相同)
查看事务历史纪录:/var/log/yum.log<br>查看历史: yum history (前面有@符号代表已经安装了)<br>
检查rpm软件包:<br>安装: rpm -ivh <br>删除:rpm -e --nodeps (忽略依赖关系删除)<br>查看已安装的软件包:rpm -qa<br>查看文件由哪个软件包提供:rpm -qf<br>查看软件包信息:rpm -qi (rpm -qpi (查询未安装的))<br>查看软件包安装的文件:rpm -ql<br>查看软件包配置文件: rpm -qc<br>列出文档文件:rpm -qd<br>只更新已经安装过的rpm软件包:rpm -F *.rpm<br>如何查看一个rpm的修改记录:rpm -q --changelog <br>查看软件包中的脚本:(查看软件包改动日志)rpm -q --scripts ((pre:前 post:后))<br>rpm有5中基本操作模式:安装、查询、升级、校验、删除
配置yum软件包:<br>一种是就临时挂载,还有永久挂载。<br>在配置文件/etc/fstab中永久配置yum源,将写的文件存放在/etc/yum.repos.d/*文件中 然后再挂载使用<br>还有一种就是直接使用yum-config-manager -add file:///mnt 直接配置yum源,然后添加gpgcheck=0 达到挂载 mount -a <br>
scp 命令
将文件复制到远程位置,或从中复制文件
scp 本地文件 访问电脑IP(或名称):地址
-r 可拷贝目录
locate 命令
查找文件系统中的文件
更新数据库updatedb 不然搜索不到要查找的内容<br>locate数据库每天自动更新,可以通过updatedb手动更新<br>
-i:忽略大小写
-n:控制输出的行数
locatectl命令用于查看本地化设置。<br>locatectl 设置本地化参数。例子:localectl set-locale LANG=zh_CN.UTF-8 例子:localectl set-keymap zh_CN <br>
find 命令
使用find搜索文件:<br>find 要查找的路径(要从哪开始查找) 选项 要查找的内容
-i:忽略大小写
根据用户或组来查找文件:<br>例如:find / -user student
-size:根据文件大小查找:<br>[root@server ~]# find /root -size -10M (小于10M)<br>[root@server ~]# find /root -size 10M (=10M)<br>[root@server ~]# find /root -size +10M (>10M)<br>
-mmin:根据修改的时间:<br>[root@server ~]# find /root -mmin -150 (分钟 150分钟以内)<br>[root@server ~]# find /root -mmin 150 (150分钟)<br>[root@server ~]# find /root -mmin +150 (150分钟之前)<br>
根据类型查找文件:<br>[root@server ~]# find /root -type d<br>f:文件 d:目录 b:块设备 l:软链接<br>
Find补充:查找到文件后,执行相应操作<br>例如:find /root -maxdepth 1 -name "find*" -type f -exec cp {} /root/test_find \;
正则表达式 通过grep查看文件
行定位符:<br>以。。。开头:^ 以。。。结尾:$
-i: 忽略大小写
-v:取反
\b: 单词边界<br>例如:[root@server ~]# cat zhengze2.txt | grep '\bcat\b'<br>cat<br>cat cat cat cat
. : 无限制通配符 任意单个字符<br>例如 cat zhengze2.txt | grep c.t
[]:匹配中括号中的任意一个字符<br>cat zhengze2.txt | grep c[aou]t<br>
*:前面的一个字符(整体)出现任意次<br>.*匹配所有<br>
\(反斜杠):转意字符,取消后面字符的特殊含义,后边的一个变量变成单纯的字符串<br>''(单引号):其中的所有内容变成单纯的字符串<br>“”(双引号):保留其中变量属性,不进行转移处理<br>``(反引号):将其中的命令执行后返回结果<br>
():括号中的内容作为一个整体<br>例如:cat zhengze.txt | egrep '(bc){2,}'<br>+:前面的字符1次及以上 {1,}<br>例如[root@server ~]# cat zhengze.txt | egrep '(bc)+'<br>?:前面的字符0到1次<br>例如: cat zhengze.txt | egrep '(bc)?'<br>| :或 例如cat zhengze.txt | egrep '^"|^#'<br>
修改网卡名
1./etc/sysconfig/grub 下的GRUB_COMLINE_LINUX="" 中添加 net.ifnames=0 biosdevname=0 ” <br>修改完以后 grub2-mkconfig -o /boot/grub2/grub.cfg 操作,重新启动加载使上边配置文件生效<br>2.编辑 /etc/udev/rules.d/70-persistent-ipoib.rules 文件, 复制一行注释掉的内容,去掉#注释,修改NAME=eth0, 同时把ATTR{address}==”your mac address (第一张网卡的mac地址) <br> 修改完全部上边的信息以后重启生效<br>
完整的修改网卡名的操作步骤实例:<br>1.(加上上边的1和2步骤然后在接着操作下边的步骤。)<br>nmcli connection show 显示所有的网卡连接状态 <br>2. 删除之前的网卡名连接状态 nmcli connection delete ens33<br>3.是修改的网卡生效 nmcli connection add type ethernet ifname eth0 (接口名)con-name eth0(连接名)<br>修改链接信息,上边nmcli的使用有这个知识点。<br>4.启动网卡即可 nmcli connection up eth0(网卡名)<br>
blkid 命令
查看磁盘类型及uuid
查看端口号 命令<br>检查语法 命令<br>
ss -anptul 或 netstat -anp<br>例如:ss -anptul | grep 3306<br>
例子: testparm /etc/samba/smb.conf 检查语法
关于一些Mariadb(MySQL)的知识<br> MYSQL存储方式:B加数
登录:<br>Mysql –u root –h localhost(要登录主机名) -p‘密码’<br>数据库中也可以非交互式的查看里边的文档内容: (通过选项-e查看)mysql -u root -p密码 -e “show databases”(不登录直接查看有哪些表)<br>
创建数据库:create database<br>增删改查数据:insert delete update select<br>CRUD(增查改删):C:insert R:select U:update D:delete<br>desc user(表名); 查看表结构<br>use mysql (切换当前所在的库)<br>插入数据的使用方法:insert into 表名 [(字段,字段)] values(实际值,实际值,.....);<br>插入数据的例子:insert into student(id,name) value(1,'wangwu'); (在插入数据的时候如果有数值为空那么用 '(null)' 表示空值)<br>修改数据的使用方法:update 表名 set 要修改的字段=新值[,要修改的字段=新值] [where 满足字段的条件]<br>修改数据的例子:update usertab set username='wangwu' where id=61;<br>删除数据的使用方法: delete from 表名 [where 满足字段的条件]<br>删除数据的例子:delete from student where sid=2;<br>查询语句的用法很重要有许多种:(按条件查询,多表查询,也可以算数,也可以查当前时间) distinct 去除重复的行<br> 字符串参与运算的时候为0 :select ‘不知道’+32 结果为32 也可以按别名查找 as 或者是 空格<br>
show tables; (查看库里有哪些表)<br>show databases; 查看有哪些库<br>
limit 限制文本输出行数<br>Limit n,m n是从几开始,m是显示多少条数据<br>下面例子中,n为0,对应的第一个数据为1,若n为6对应第七个数据,id为7<br>
alter命令:<br>add方式:用于增加新列和完整性约束 语法:ALTER TABLE <表名> ADD <列定义>|<完整性约束><br>添加一列id, id字段作为主键(一个表中只能有一个主键),且自增长(主键自增长auto_increment) 例如:alter table usertab add id int(1) primary key auto_increment first;<br>值列表:例如:select id,username from usertab where id in(1,3,5,7,9,60);<br>在表外添加外键的方法: alter table 表名 add foreign key (主键名) references 外键表名 (外键中的主键名) <br> 例子: alter table sc add foreign key (sid) references student (sid); 给sc表添加外键sid参考student的表的主键<br>在创建表的时候添加外键(外键只能一条一条的添加(并且必须和练习的表中的主键的类型长度和名称相同,还有就是字符编码必须一致,不然不可能成功)<br>例如: foreign key (sid) references student(sid);<br>drop方式:用于删除指定的完整性约束条件,或删指定的列 语法:ALTER TABLE<表名> DROP [<完整性约束名>]<br>例子:alter table sc(表名) drop foreign key sc_ibfk_1(创建的外键名);<br>change方式,用于修改某些列 语法:ALTER TABLE [表名] CHANGE <原列名> TO <新列名><新列的数据类型><br>modify方式,用于修改某些列的数据类型 语法:ALTER TABLE [表名] MODIFY [列名] [数据类型]<br>drop命令:删除表和库 例子: drop table sc(表名); drop databases 库名;<br>
升序和降序<span style="display: inline !important; float: none; background-color: rgb(255, 255, 255); color: rgb(68, 68, 68); font-family: 微软雅黑; font-size: 13px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; -ms-user-select: text; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px; word-wrap: break-word;"> (desc降序 <span style="display: inline !important; float: none; background-color: rgb(255, 255, 255); color: rgb(68, 68, 68); font-family: 微软雅黑; font-size: 13px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; -ms-user-select: text; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px; word-wrap: break-word;">asc升序) ( order by 排序)</span></span><b></b><i></i><u></u><sub></sub><sup></sup><strike></strike><br>例如:select id,username from usertab order by id asc; 按id升序 (默认情况下为升序)<br>
使用where子句过滤结果:<br>例如:select id,username from usertab where id=1;<br>
And表示条件都成立为真(与) (开区间 ,除非加上等号)<br>or:有真为真(或) (开区间,除非加上等号)<br>Between:在…之间(闭区间)<br>Like:%是通配符 例如:select id,username from usertab where username like 'roo%';<br>
在本地电脑上边安装连接到本地电脑的IP地址 通过select user,host,password from mysql.user查看可以连接到本地的电脑<br>例子:create user mobius@'192.168.99.%' identified by 'redhat';<br>连接上电脑以后查看不了权限这时就应该给连接电脑授权:grant 权限 on 库名.表名 to 用户名@hostname、ip地址<br> 例子:grant select on db3.* to mobius@'192.168.99.%';<br>授权时可以直接创建用户: grant create,delete,update,select,insert on *.* to test@'%' identified by '123456' with grant option;<br>取消授权:revoke Revoke 权限 on 库名.表名 from user@hostname(ip)例如:revoke select on db3.* from test2@'192.168.99.174';<br>flush privileges; 刷新授权信息<br>查看用户授权信息:show grants for user@hostname(ip)<br>删除用户: delete from mysql.user where user='test';(test为用户名)<br>
回复数据的操作:逻辑备份:<br>例子:备份db3库:<br>[root@server ~]# mkdir /backup (数据库保存备份的地址)<br>[root@server ~]# mysqldump -uroot -p123456 db3 > /backup/db3.dump<br>[root@server ~]# vim /backup/db3.dump<br>[root@server ~]#<br>恢复db3库的数据<br>[root@server ~]# mysql -uroot -p123456 db3(恢复到的数据库名) < /backup/db3.dump<br>备份所有库:mysqldump -uroot -p123456 --all-databases > /backup/all.dump <br>物理备份:在客户端下载使用mariadb-servers服务 添加一块新的硬盘,给硬盘进行分区和格式化等操作<br>在物理备份的时候要在关闭数据库的情况下进行操作 数据库中:flush table with read lock; 这个窗口不要关<br> 快照的操作: lvcreate -L 2G (大小)-s(备份快照) -n (名字)mariadb-backup /dev/vg0/mariadb(备份的逻辑卷)<br> 解锁: unlock tables; 关闭刷新 并关闭数据库 然后挂载快照到本地(这里需要注意的是必须将前边挂载的逻辑卷卸载掉然后挂载快照,因为用的是一个UUID所以会有冲突) 将里边的内容复制到你能查看的文件里边<br>
查看数据库存放数据的目录:<br>[root@server ~]# mysqladmin -uroot -p123456 variables | grep datadir
通过 --skip-column-names和-E格式化选项来简化要解析的输出<br>[root@server ~]#mysql --skip-column-names -E -u root -p密码 -e "show databses"<br>通过 --skip-grant-tables 启动MySQL服务时跳过权限认证 将这一行内容加载配置文件/etc/my.cnf中<br>在外边忘记MySQL密码怎么进入MySQL: 首先 vim /etc/my.cnf在首行内容中添加上边命令进入数据库然后使用上边的update更改密码 <br>update mysql.user set password=password('新密码') where 更改的值 ; flush privileges; 刷新<br>在知道数据库密码的情况下在外边使用 格式:mysqladmin -u 用户 -p 旧密码 password 新密码<br> 例如: mysqladmin -u root -p123 password 456;<br>或者是直接进入数据库 使用 update更改密码<br>
数据查询语言DQL (数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE),<br>数据操纵语言DML (插入:INSERT 更改:UPDATE 删除:DELETE),<br>数据定义语言DDL,用来创建数据库中的各种对象-----表、视图、 索引、同义词、聚簇等<br>数据控制语言DCL (GRANT:授权)。<br>MySQL中的约束条件:主键 primary key 外键 foreign key 候选码(唯一键) unique 不为空 not NULL 检查check--MySQL数据库正在完善中<br>
非分组条件对子句进行筛选:where子句<br> 比较运算符 = <>(不等于) > >= < <=<br> 逻辑运算符 not and or (按等级的先后顺序排列的)<br>特殊比较运算符 [not] between and [not] like(串的模糊查询 _表示单个字符 %表示不定个字符) [not] in ls [not] null<br>
分组条件对子句进行查询: group by 分组 having 查找分组的内容<br><br>
函数的知识:max 最大值 min 最小值 avg 平均值 sum 求和 count()求数值 里边可加参数也可以是*<br> round 四舍五入 truncate 截取 concate 将数据进行合并 length(str) char_length(str) 长度<br> 字串:substr(原字串,开始提取的位置,长度) 子串在原字串的位置:instr(原字串,子串) 0不存在 非0存在<br>日期函数 now() year() month() date_add()日期加上一个时间间隔值<br>
控制函数 case 格式1: case 列明 when 常量条件 then 结果 when 常量条件 then 结果 ... end<br> 格式2: case 列明 when 含运算符的条件 then 结果 when 含运算符的条件 then 结果 ... else 结果 end<br>例子: select sanme 姓名, (case sex when 0 then '男' when 1 then '女' end) 性别 from student;<br>
关于多表查询的连接方式:<br>自然连接 natural 两个表中相同字段进行自动匹配 结果相同的字段只保留一个 格式:select 要选择的字段 from 表1 natural join 表2<br>例子: select * from student natural join sc;<br>using 连接 两个表中具有相同字段,需要匹配的字段使用using 匹配完成之后,字段是独一无二的 格式:select 要选的字段 from 表1 join 表2 using (相同的字段); 例子: select * from student join sc using (sid);<br>等值连接 使用方法和最基本的方法相似,也可以在单个表中查询 格式:select 要选择的字段 from 表1 join 表2 on 连接条件; <br>例子:select * from student join sc on sc.sid=student.sid ; <br>左链接和右链接的使用方法和等值连接相似 格式为: select 要选的字段 from 表1 (left/right) join 表2 on 连接的等值条件; <br>
子查询:查询的嵌套 单值条件的查询用= 多值条件的查询用 in<br>where子查询 from子查询 select子查询 order by 子查询<br>
集合 union将两个表的数据结合在一起,并去除重复的行 <br> union all 只是将两个表的数据结合在一起 (必须要保证字段个数相同,严格来说字段类型保持一致,但是MySQL中能够实现不同类型字段的合并)<br>例子:select * from student union select * from student ;<br> any(任何满足条件的) 和all(满足所有的条件) 的使用<br>例子:select * from student where length(sname)>any (select length(sname) from student where sname like '%a%');<br>
创建视图 格式:create [or replace] view 视图名 as select 子句<br> or replace 如果视图存在那么更新<br> 使用要求: 有分组的数据不能进行数据的增、删、改 (有distinct关键词的视图同样不能进行数据的增、删、改)<br> 有视图中字段如果是表达式,不能进行增改可以删除<br> 如果物理表中有非空且没有默认值的约束(非空,主键无自增,候选码),不能进行添加 视图不能被修改,但是可以删除<br> <br>
索引 目的:在数据库中检索数据的时候速度快(但是索引过多的话会影响检索速度)<br> 创建索引的字段: 一个或者多个字段(列)<br> 类型: 普通索引、唯一性索引、单列索引、多列索引、全文索引、空间索引<br> 创建索引:创建表时加索引的方法:create table 表名 ( ....... , index (字段) ); 后添加索引的方法 alter table 表明 add 索引名(字段);<br> 删除索引的方法: drop index 索引名 on 索引所在的表;<br>
<span style="font-size: inherit;"><font color="#00ffff">一定不走索引的情况:</font><br></span> 1.索引列参与运算<br> 2.模糊查询时(左模糊走索引,其余全模糊和右模糊不走索引)<br> 3.字符串和数字比较<br> 4.OR关键字
生产环境中如何创建索引:
in(在区间内)和exists(是否存在)的用法和区别:<br>1. in()适合B表比A表数据小的情况<br>2. exists()适合B表比A表数据大的情况<br>当A表数据与B表数据一样大时,in与exists效率差不多,可任选一个使用.<br>in()只执行一次,它查出B表中的所有查询字段信息并缓存起来.之后,检查A表的字段信息是否与B表中的字段信息相等,如果相等则将A表的记录加入结果集中,直到遍历完A表的所有记录<br>
配置环境变量的方法: 1.打开电脑设置,搜索环境变量<br> 2.打开配置环境变量,新增变量<br> 3.新增名称为MYSQL_HOME ,路径为MySQL安装版本界面<br> 4.配置PATH路劲, 新增内容 %MYSQL_HOME%\bin 即可完成。
数据类型
count(1) 和count(*)之间的区别: 结果是一样的。 表中没有主键count(1)速度快,反之count(*)速度快。
事务
事务只对增删改起作用
子主题
vim 命令
一些基本语法在笔记本上边都记着 想不起来了查看笔记本<br>撤销:u 恢复:ctrl+r<br>可视模式:v(字符) V(行) ctrl+v(块)<br>
末行模式下的一些操作
在末行模式下如何替换文本<br>替换:<br>:s/root/ROOT/ 默认只替换当前行第一个<br>: s/root/ROOT/g 替换当前行所有root为ROOT<br>:%s/root/ROOT/g 替换所有root为ROOT<br>:3,5s/root/ROOT/g 替换3到5行的root为ROOT
显示行号<br>:set nu<br>取消行号:<br>:set nonu
设置高亮: /单词 (向单词尾寻找相同单词) ?单词 (向单词首寻找单词)<br>取消高亮 : /noh<br>设置成高亮以后按n键可在高亮之间来回切换<br>
:set tabstop=2 这个是设置首行缩进的知识<br>
:sp 生成一个新的窗口 <br>CTRL w 两个表之间切换<br>:exit 关闭生成的窗口<br>
批量注释:<br>Ctrl+v 按下 选中第一列<br>Shift+I 进入插入模式<br>在选中的第一行输入#<br>Esc退出
在编辑界面跳转到50行的命令操作: 1. 50G 2. :50<br>以只读的方式打开文件并进入vi编辑器的命令是:view<br>vim的三种工作模式:命令模式(ex模式)、编辑模式(末行模式)、输入模式
计划将来的Linux任务
创建一次性计划任务 at命令<br> 例如:echo 'touch at.txt' | at now +20 minutes<br>
查看任务列表 : atq 命令<br> at -l 命令<br>
at -d 1 (删除一次性任务)(或者是atrm 1)<br>1为计划性任务的编号,应该先查看后删除
at -c (查看任务内容)
交互式生成一次性计划任务:<br>例子1:[root@server ~]#at now +10minutes<br>at> touch 100.txt<br>at> tar -zcf 100.tar.gz 100.txt<br>at> <EOT><br>例子2:at now +20 minutes <<EOF<br>> touch 20.txt<br>> echo 20 > 20.txt<br>> EOF<br>
队列:atq -q 对列名<br>例子:[root@server ~]# atq <br>7 Fri Jul 26 15:27:00 2019 a root<br>[root@server ~]# atq -q a<br>7 Fri Jul 26 15:27:00 2019 a root<br>[root@server ~]# atq -q b<br>[root@server ~]# echo 'touch queue.txt' | at -q b now +30 minutes<br>job 9 at Fri Jul 26 16:01:00 2019<br>[root@server ~]# atq -q b<br>9 Fri Jul 26 16:01:00 2019 b root<br>[root@server ~]# atq <br>9 Fri Jul 26 16:01:00 2019 b root<br>[root@server ~]# atq -q a<br>[root@server ~]#<br>
周期性计划任务
格式: * * * * * 命令 六个字段<br> 分 时 日 月 周 (显示的是前五个字段分别代表时间,第六个字段代表的是执行的命令或者是脚本文件)<br>分 */7 每7分钟执行一次<br>日的取值范围是 1~31<br>
crontab 命令
crontab –l (这条命令中,默认的用户是root) 查看列出当前用户的计划任务
crontab –r 删除 (删除用户所有任务)<br>删除某一个任务,使用编辑,删除任务相关的行<br>
crontab –e 编辑<br>创建一个周期性计划任务,如果已存在则编辑,如果不存在,则创建<br>
x-y 表示范围<br>x,y 表示列表
为指定用户创建周期性计划任务: crontab -e -u fred
所有命令一定要用绝对路径的方式来写,如果不知道绝对路径,请用 whereis 命令进行查询 例如:0 1 * * 1-5 /usr/bin/rm -rf /tmp/*<br>逗号(,)来分别表示多个时间段 例如:8,9,12”表示 8 月、9 月和 12 月<br>减号(-)来表示一段连续的时间周期 例如:“日”的取值为“12-15”, 则表示每月的 12~15 日)<br>用除号(/)表示执行任务的间隔时间 例如:*/2”表示每隔 2 分钟执行一次任务<br>
关于watch的用法 每.....时间执行......命令(或者是查看文本) 使用格式:watch 选项 参数<br> -n 指令执行的间隔时间 -d 高亮显示输出信息之间的不同之处 -t 不显示标题<br> 例如: watch -n (指令执行的间隔时间) 命令 文本<br> watch -n 1 ls a.txt<br>
自由主题
收藏
0 条评论
下一页