FK_学习Linux

编写Shell监听端口重启服务

服务总是自动挂掉,为解决运维人员不能及时重启,所以写个定时脚本,一分钟监控一次端口是否占用,不占用说明服务挂了,自动重启服务。

脚本,以80端口为例


编写taskStartNginx.sh

#!/bin/bash

nginx=`netstat -an | grep ":80" | awk '$1 == "tcp" && $NF == "LISTEN" {print $0}' | wc -l`

if [ $nginx -eq 0 ];then
  #端口没有占用,重启服务
  echo "重启Nginx服务"
  /usr/local/nginx/sbin/nginx
else
  echo "运行正常!"   
fi  

-----------------------------------
添加到定时任务

1、crontab -e : 修改 crontab 文件. 如果文件不存在会自动创建。 
2、crontab -l : 显示 crontab 文件。 
3、crontab -r : 删除 crontab 文件。
4、crontab -ir : 删除 crontab 文件前提醒用户。


执行crontab -e

#每分钟执行一次taskStartNginx.sh脚本
*/1 * * * * /usr/local/nginx/taskStartNginx.sh

定时任务服务开关重启设置
systemctl enable crond.service # 让服务开机启动
systemctl disable crond # 不让开机启动
systemctl status crond # 查看服务状态
systemctl stop crond # 暂停服务
systemctl start crond # 启动服务
systemctl restart crond # 重启服务
systemctl is-enabled crond # 查看服务是否开机启动

Linux安装JDK

上传JDK包解压

修改/etc/profile文件
vi /etc/profile

在profile文件末尾配置jdk环境:

export JAVA_HOME=/usr/local/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

保存然后使用命令使profile重新生效

source /etc/profie

Linux查询CPU

https://www.cnblogs.com/mengchunchen/p/9669704.html

Linux中多种查看系统时间的方法

date 这个是最经典的系统查看时间的命令
[root@localhost ~]# date
2021年  1月 21日 木曜日 15:06:56 CST

uptime
[root@localhost ~]# uptime
15:08:31 up 52 days,  6:38,  1 user,  load average: 0.00, 0.00, 0.00

Linux修改系统时间的方法

方法1

比如说把时间设为2021-01-21 18:00:00

我们会先设日期
date -s 20210121
再设时间
date -s 18:00:00


方法2

date -s "20210121 18:00:00"

查看Linux iptables是否启动

 systemctl status iptables  查看iptables状态


注意:systemctl  为Centos7的命令    Centos6可以使用service

systemctl和防火墙firewalld命令

一、防火墙的开启、关闭、禁用命令

(1)设置开机启用防火墙:systemctl enable firewalld.service

(2)设置开机禁用防火墙:systemctl disable firewalld.service

(3)启动防火墙:systemctl start firewalld

(4)关闭防火墙:systemctl stop firewalld

(5)检查防火墙状态:systemctl status firewalld 
二、使用firewall-cmd配置端口

(1)查看防火墙状态:firewall-cmd --state

(2)重新加载配置:firewall-cmd --reload

(3)查看开放的端口:firewall-cmd --list-ports

(4)开启防火墙端口:firewall-cmd --zone=public --add-port=9200/tcp --permanent

  命令含义:

  –zone #作用域

  –add-port=9200/tcp #添加端口,格式为:端口/通讯协议

  –permanent #永久生效,没有此参数重启后失效

  注意:添加端口后,必须用命令firewall-cmd --reload重新加载一遍才会生效

(5)关闭防火墙端口:firewall-cmd --zone=public --remove-port=9200/tcp --permanent

 

查询Linux使用的镜像版本

cat /etc/redhat-release 

查询服务器主机名

uname -n

hostname

定时任务

systemctl enable crond.service # 让服务开机启动
systemctl disable crond # 不让开机启动
systemctl status crond # 查看服务状态
systemctl stop crond # 暂停服务
systemctl start crond # 启动服务
systemctl restart crond # 重启服务
systemctl is-enabled crond # 查看服务是否开机启动



https://www.cnblogs.com/miaocbin/p/11540312.html

https://www.cnblogs.com/clsn/p/8428257.html

查看Linux自启动服务列表

systemctl list-unit-files|grep enabled

-----------------------------------以上为补充内容-----------------------------------------

1、Linux

主要学习

CentOs6
CentOs7

Linux:

1.开源免费
2.安全稳定(开源使得linux更加安全可靠)
3.适合服务器使用


---------------------------------------------------------------------------
unix操作系统简述:
1969年,美国贝尔实验室的肯 • 汤普森在DEC PDP-7机器上开发出了UNIX系统。
1971年,肯 • 汤普森的同事丹尼斯 •里奇发明了C语言;
1973年,UNIX系统的绝大部分源代码用C语言重写,这为提高UNIX系统的可移植性打下基础。
unix主要发行版本:
系统      公司   硬件平台
AIX       IBM    PowerPC
UX        HP     PA-RISC
Solaris   SUN    SPARC


linux操作系统简介:
Linux系统诞生于1991年,由芬兰大学生李纳斯(Linus Torvalds)和后来陆续加入的众多爱好者共同开
发完成。

linux版本分类:
1.内核版: www.kernel.org
    RHEL6.X   2.6.X
    RHEL7.X   3.10.X

2.发行版:(Red Hat Enterprise Linux  Red Hat公司发布的面向企业用户的Linux操作系统)
    RedHat系列:
      个人版:Fedora
      服务器版:RHEL(RedHat Enterprise Linux)  --收费(收取一些售后服务费 Centos是抄ReaHat 
免费开源的 已经被RedHat公司收购了)
    Debian系列:
      ubuntu 


查看网站使用的什么操作系统
www.netcraft.com(网站扫描器)


注意:
通过VM虚拟机引用CentOs镜像创建Linux虚拟机,分配的最小内存为628MB,如果小于628MB则默认为简易
安装。(相当于只安装了一个裸机)



 2、VMware配置

安装VMware会创建两个虚拟网卡。

VMnet1  VMnet8


VMware网络模式有三种:

桥接模式:使用的是本机真实网卡(自动模式 如果本机有多个网卡自动桥接其中一个。
设置桥接模式固定连接某个网卡,关闭虚拟机后,通过VMware 编辑 -> 虚拟网络编辑器 ->设置桥接连接方式)
NAT模式:使用的是VMnet8。
仅主机模式:使用的是VMnet1。

桥接模式:  1.可以连接到本机 2.可以连接到局域网 3.可以连接到公网
NAT模式:   1.可以连接到本机 2.不可以连接到局域网 3.可以连接到公网
仅主机模式: 1.可以连接到本机 2.不可以连接到局域网 3.不可以连接到公网


 3、分区

MBR分区:最大支持2.1TB硬盘(超过部分无法识别使用),每块硬盘最多支持4个分区。

GPT分区:最大支持9.4ZB硬盘(1ZB=1024PB 1PB=1024EB 1EB=1024TB),分区数没有限制,但是windows限制
128个主分区。


MBR分区类型:
主分区:最多只能有4个。
扩展分区(归属于主分区):
 最多只能有一个。
 主分区加扩展分区最多有4个。
 不能写入数据,只能包含逻辑分区。


格式化:
写入文件系统,并清除旧数据,在磁盘特定区域写入特定数据,在分区中划分一片用于存放文件分配表、目录表等用于文件管理
的磁盘空间。


分区设备文件名:
/dev/hda1/(IDE硬盘接口)
/dev/sda1/(SCSI硬盘接口、SATA硬盘接口)

a第一个硬盘 b第二个硬盘 依此类推  
1第一个分区 2第二个分区 依此类推 (1 2 3 4必须给主分区  5开始为逻辑分区)


挂载:
必须分区:
/(根分区)
swap分区(交换分区  也可称为虚拟内存 当内存不够时,将会使用swap分区)
推荐分区:
/boot(启动分区)

挂载点:使用已经存在的空目录作为挂载点(特殊目录不行:/bin /lib /etc)



4、IP配置

Centos6.5以后(包括6.5)提供了setup命令,图形化配置ip


Centos6 重启网络服务

service network restart




--------------------------------------------------------------
连接进入linux系统  默认存在三个日志
[root@localhostCentos6 ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog




install.log :记录安装在系统中的软件包及其他版本信息
install.log.syslog :记录安装过程中留下的事件记录
anaconda-ks.cfg :记录安装过程中系统设置下选项

 

5、xshell

xshell linux远程连接工具(家庭/学生免费版)

下载地址:https://www.netsarang.com/zh/

xshell手动上传和下载软件包(通过yum源在线安装,可学习下文yum源安装软件包)


作用类似winScp的上传和下载功能。

注意:只能在xshell窗口使用


6、winScp

windows到linxu文件传输工具。

下载地址:https://sourceforge.net/projects/winscp/

 

7、linux注意事项

1.Linux 区分大小写 Windows不区分大小写

2.linux 不靠扩展名区分文件类型,而是靠权限位标识来确定文件类型的。
  
  但是建议按照windows熟悉文件后缀编写。
  
  建议特殊文件必须编写后缀
  
  压缩文件:.gz .bz2 .zip .tar.gz .tar.bz2 .tgz
  
  二进制软件包: CentOs中使用二进制安装包是RPM 使用 .rpm扩展名
  
  程序文件:Shell脚本 .sh
 

8、目录结构

/bin :存在系统命令目录 普通用户和超级用户可以执行。是/usr/bin 目录的软链接(ls ll ping mkdir kill 等命令都存放于此)

/sbin :存在系统命令目录 只有超级用户可以执行。/usr/bin 目录的软链接。

/usr/bin :存在系统命令目录 普通用户和超级用户可以执行。

/boot :系统启动目录,保存与系统启动相关的文件。如 内核文件和启动引导程序。

/dev :设备文件保存存储

/etc :配置文件保存位置。 系统内所有采用默认安装方式(rpm安装)的服务配置文件全部保存在此目录中。
如 用户信息、服务启动脚本、常用服务的配置文件等。

/home :普通用户的家目录。在创建用户时,每个用户要有一个默认登陆和保护自己数据的位置,就是用户的
家目录。所有普通用户的宿主目录是在 /home/下建立一个和用户名相同的目录。如用户 user1的家目录
就是/home/user1/

/root :超级用户的家目录。

/lib :系统调用的函数库保存位置。 是/usr/lib的软链接

/lib64 :64位函数库保存位置。是/usr/lib64的软链接

/lost+found :当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。

/media :挂载目录。系统建议是用来挂载媒体设备的,如软盘和光盘。

/misc :挂载目录。系统建议用来挂载NFS服务的共享目录。

/opt :第三方软件安装的保存位置。 业界更习惯在 /usr/local/目录也可以用来安装软件。

/proc :虚拟文件系统。该目录中的数据并不保存在硬盘上,而是保存到内存中。主要保存系统的内核、
进程、网络状态等。 如 /proc/cpuinfo是保存CPU信息的  /proc/devices 是保存设备驱动的列表
/proc/filesystems是保存文件系统列表。

/sys :虚拟文件系统。和/proc目录相似,该目录中的数据都保存在内存中,主要保存与内核相关的信息。

/run :系统运行时产生的数据,如ssid 、pid等相关数据。 /var/run是此目录的软链接。

/srv :服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据。

/tmp :临时目录

/usr :系统软件资源目录。存在系统软件资源的目录。在系统中安装的软件大多数保存在这里。

/usr/lib :应用程序调用的函数库保存位置。

/usr/local :手工安装的软件保存位置。一般建议源码包软件安装在这个位置。

/usr/share :应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录

/usr/src/kernels :内核源码保存位置

/var :动态数据保存位置。主要保存缓存、日志以及软件运行所产生的文件。

/var/lib :程序运行中需要调用或改变的数据保存位置。如 mysql的数据库保存在 /var/lib/mysql目录中

/var/log :系统日志保存位置

/var/run :一些服务和程序运行后 PID保存位置。 /run目录的软链接




9、重启服务器命令

shutdown -r now 命令重启

这条命令在重启时会正常保存和中止服务器中正在运行的程序,是安全重启命令。而且最好在重启前执行
几次 sync 命令,这条命令是数据同步命令,可以让暂时保存在内存中的数据同步到硬盘中。

10、SSH远程链接 

SSH远程连接linux服务器

SSH连接默认端口 22

SSH 用户名@IP地址 -p 端口

ssh root@192.168.204.128 -p 22

SSH 用户名@IP地址 --省略

ssh root@192.168.204.128 

注意:

查询SSH服务是否已经开启
rpm -qa | grep ssh

libssh2-1.4.2-1.el6.x86_64
openssh-clients-5.3p1-104.el6.x86_64
openssh-server-5.3p1-104.el6.x86_64
openssh-5.3p1-104.el6.x86_64

查看linux是32位还是64系统:getconf LONG_BIT
查看linux发行版本信息:cat /etc/issue 或者 cat /etc/redhat-release
查看linux系统主型号、CPU等信息: cat /proc/cpuinfo
查看linux系統内核信息:uname -a

11、Linux常用命令

[root@localhostCentos6 ~]# 

root:显示当前登录的用户
~:表示当前所在的目录 此实列为/root 超级用户的家
#:命令提示符。超级用户是#,普通用户是$

--------------------------------------------------------------------->目录命令<--------------------------------------------------------------------- 

12、ls命令

ls命令作用:显示目录下的内容

ls [选项] [文件名或目录名]

-a 显示所有文件,包括隐藏文件

-d 显示目录信息,而不是目录下的文件

-h 人性化显示文件大小

-l 长格式显示

 

13、cd命令 

cd 切换所在目录的命令

cd ~ 回到用户家目录

cd - 回到上次所在目录


绝对路劲:以根目录为参照物,从根目录开始,一级一级进入目录

相对路劲:以当前目录为参照物,进行目录查找



pwd 命令:查询当前所在目录命令

14、mkdir命令

mkdir 创建目录

mkdir -p 递归建立所有目录

15、rmdir命令

rmdir 删除空目录

注意:只能删除空目录 如果目录下面有文件或者子目录会报错 



了解使用:extundelete

--------------------------------------------------------------------->文件命令<--------------------------------------------------------------------- 

16、touch命令

touch命令

创建文件。 文件不存在便创建,文件存在便修改文件时间

17、stat命令

stat命令

查看文件详细信息的命令。

18、cat命令

cat命令用来查看文件内容,全文展示。

适合查看较小的文件。


cat -A :相当于-vET选项的整合,用于列出所有隐藏符号。

cat -E :列出每行结尾的回车符.($ 表示回车符)。

cat -n :显示行号

cat -T :把Tab键用^I 显示出来

cat -v :列出特殊字符

19、more命令

more命令

more分屏显示文件命令。

空格键:向下翻页

b: 向上翻页

回车键: 向下滚动一行

/字符串:搜索指定的字符串

q: 退出

20、less命令

less命令

less分行显示命令,基本操作于more一样。


上下 切换行数。(more没有这个上下切换命令)

21、head命令

head命令

默认显示文件前10行记录


head -n 20 文件名. -n 设定显示行数

head -v 文件名  显示文件名

22、tail命令

tail命令。

默认显示文件结尾10行命令。


tail -n 20 文件名. 指定显示行数

tail -f 文件名.  监听文件新增内容

23、ln命令

ln命令


ln -s 源文件 目标文件  :不加 -s创建硬链接  加 -s创建软链接。


ln -f 源文件 目标文件  :如果目标文件已存在,则删除目标文件后再建立链接文件。 



硬链接:
1.源文件和硬链接文件拥有相同的Inode和Block
2.修改任意一个文件,另外一个文件同步修改
3.删除任意一个文件,另外一个文件不影响使用
4.硬链接不能链接目录


软链接:
1.源文件和硬链接文件拥有不同的Inode和Block
2.修改任意一个文件,另外一个文件同步修改
3.删除软链接文件,源文件不受影响,删除源文件,软链接文件不可用
4.软链接没有实际数据,只保存源文件的Inode.源文件大小不影响软链接大小
5.软链接可以链接目录

24、rm命令

rm即可以删除文件,也可以删除目录。

rm [选项] 文件或者目录

-r 递归删除

-f 强制删除

-i 交互删除,在删除之前会询问用户


rm -rf 目录|文件  注意:删除

25、cp命令

cp复制命令

cp [选项] 源文件 目标文件


-a 

-d: 如果源文件为软链接(对硬链接无效),则复制的目标文件也为软链接

-i: 如果目标文件已经存在,则会询问是否覆盖

-p: 复制的文件保留源文件的属性

-r: 递归复制

26、mv命令

mv是用来剪切命令。

mv [选项] 源文件 目标文件

-f :强制覆盖 如果目标文件已经存在,不询问直接覆盖

-i : 如果目标文件已经存在,则询问是否覆盖

-v :显示详细信息

27、基础权限

基础权限

ls -l 长格式显示目录文件信息,第一列就是文件的权限。


-(文件类型) ---(所有者权限) ---(所属组权限) ---(其他人权限) 

文件类型:

- 普通文件

d 目录文件

i 软链接文件

b 块设备文件。特殊设备文件,存储设备都是这种文件。

c 字符设备文件。 特殊设备文件,输入设备一般都是这种文件, 如鼠标、键盘等。

p 管道符文件

s 套接字文件

权限类型:
r :read 读取权限
w :write 写权限
x :execute 执行权限
 
2~4位代表文件所有者权限.  u代表
5~7位代表文件所属组权限.  g代表
8~10位代表文件其他人权限. o代表

 28、设置权限

chmod命令


chmod [选项] 权限 文件名

-R  递归设置权限,也就是给子目录中的所有文件设定权限

用户身份:

u :所有者

g :所属者

o :其他人

a :全部身份

+ - 赋值法

+  :加入权限

-  :减去权限

=  :设置权限

权限:

r :读取权限

w :写入权限

x :执行权限

 

数字权限:

4 :代表r权限  读

2 :代表w权限  写

1 :代表x权限  执行



常用权限:

644

755 

777 :最高权限

注意:数字相加最大为7

29、设置文件所有者和所属组命令

普通用户只能修改【所有者】是自己的【文件或者目录】的权限(读 写 执行)。

普通用户不能修改【文件或者目录】的【所有者或者所属组】,哪怕文件或者目录的所有者和所属组是自己也不行,只能root用户操作。

chown命令

chown修改文件和目录所有者和所属组的命令。


chown [选项] 所有者 : 所属组 文件或者目录

-R :递归设置

chgrp命令

修改文件或目录的所属组。(上面讲的chown也可以修改所属组,但是chgrp只能用来设置所属组)

-R :递归设置

30、权限针对目录或文件作用

注意:不能用root用户操作,超级管理忽略一切权限禁锢。


1.权限对文件作用

读(r):可以对文件执行cat、more、less、head、tail等查看命令。

写(w):可以对文件执行vim、echo等修改文件内容的命令。

执行(x):可以执行运行脚本文件。


注意:
注意:
注意:
想要删除文件,必须要拥有上级目录的写(w)权限。

权限对目录的作用

读(r):可以对目录执行ls命令,查看目录下的内容


写(w):可以在目录执行touch rm cp mv 命令,并且可以删除子文件。

执行(x):可以对目录执行cd目录。

31、umask查看系统默认权限命令

umask 查看系统默认权限设置

注意:不建议修改系统默认权限设置


文件:新建文件的最大权限是666。

目录:新建目录的最大权限是777。


[root@localhostCentos6 ~]# umask
0022
[root@localhostCentos6 ~]# 

--0022 暂时忽略第一个0,下文会讲到这个权限。022

666-022=644 644也就是创建文件的默认权限。
777-022=755 755也就是创建目录的默认权限。

32、man命令

man是最常用的帮助命令,也是Linux最主要的帮助命令。

man [选项] 命令

-f :查看命令拥有哪个级别的帮助。

-k :查看和命令相关的所有帮助。



man 命令 可以查看命令的详细信息

举例:man ls

33、info

info 以书本目录形式显示更详细命令介绍

34、help命令

help命令只能获取Shell内置命令。

shell内置命令,就是Linux自带的命令。

type命令 可区分命令是shell内置命令还是外部命令。

shell是Linux的命令解释器。

35、whereis命令

whereis命令

whereis搜索系统命令的命令。

注意:只能搜索系统命令,不能搜索文件。

36、which命令

which命令。

which也是搜索系统命令的命令。

与whereis命令区别:

which查询命令,如果命令存在别名,将显示别名详情。

37、locate命令

locate命令可以根据文件名搜索普通文件。

优点:按照数据库搜索,搜索速度快,消耗资源小。数据库位置 /var/lib/mlocate/mlocate.db

注意:只能根据文件名搜索,不能执行复杂的搜索。


注意:可以使用updatedb命令强制更新数据库。

38、find按照文件搜索

find 搜索路劲 [参数] 文件名

-name:根据文件名搜索,区分大小写

-iname:根据文件名搜索,不区分大小写

-inum:根据inode号搜索

39、find根据文件大小搜索

find 搜索路劲 [选项] 文件名

-size [+ | -]

+:搜索比执行文件还大的文件

-:搜索比指定文件还小的文件


find 搜索文件大小单位

d:默认单位,按照512 byte搜索。

c:按照字节搜索

w:按照双字节(中文)搜索

k:按照KB单位搜索。 必须是小写k

M:按照MB单位搜索。必须是大写M

G:按照GB单位搜索。必须是大写G

40、find按照修改时间搜索

find 搜索路径 [选项] 搜索内容

-atime [+|-]时间 : 按照文件访问时间搜索

-mtime [+|-]时间 : 按照文件数据修改时间搜索

-ctime [+|-]时间 : 按照文件状态修改时间搜索



举例:

-5 :代表5天内修改的文件

5 :代表前5~6天那一天修改的文件

+5 :代表6天前修改的文件

41、find按照文件类型搜索

find 搜索 [选项] 搜索内容


-type d:查找目录

-type f:查找普通文件

-type l:查找软链接文件

42、按照权限搜索

find 搜索路径 [选项] 搜索内容


-perm  权限模式:查找文件权限刚好等于"查找权限模式"的文件

-perm  -权限模式:查找文件权限全部包含"查找权限模式"的文件

-perm  +权限模式:查找文件权限包含"查找权限模式"的任意一个权限文件

43、find按照所有者、所属组和文件类型搜索

find 搜索路径 [选项]  搜索内容

-user:  按照用户名查询所有者指定用户的文件

-group: 按照组名查找所属组文件

-nouser: 查找没有所有者的文件


注意:-nouser常用,主要用户查找垃圾文件


-type d: 查找目录

-type f: 查找普通文件

-type l: 查找软链接



44、find逻辑运算符

find 搜索路径 [选项] 搜索内容

-a :逻辑与 and

-o : 逻辑或 or

-not :逻辑非 not

45、find其他命令

-exec选项

find 搜索路径 [选项] 搜索内容 -exec 命令2 {} \;

-exec作用将find命令查询出来的结果集,交给由"-exec"调用命令2来处理。 {}代表find查询出来的结果。

-ok 作用和 -exec相同。区别是:-ok会询问是否指定 -exec直接处理。

46、find命令结合通配符

find 结合通配符使用

?: 配置任意一个字符

* : 匹配0个或任意多个任意字符

[] : 匹配括号中任意一个字符 [abc] 可以匹配a 匹配b 或者匹配c

[-] :匹配括号中任意一个字符。 - 表示范围 [a-z]代表匹配一个小写字符

[^] :逻辑非 表示匹配不是括号中的一个字符。 [^0-9]表示匹配不是数字的字符。

47、grep命令

grep 在文件中搜索相应的字符串


grep [选项] "搜索内容" 文件名

-i: 忽略大小写

-n: 输出行号

-v: 反向查找

--color=auto :搜索出关键字用颜色显示



grep命令在文件中搜索使用正则表达式进行匹配。

? : 匹配前一个字符串0次或者1次。 (?是扩展正则,需要使用egrep命令)

* : 匹配前一个字符串0次或者多次。

[] : 匹配括号中任意一个字符。 [abc] 匹配a 匹配b 或者匹配c

[-] : 匹配括号中任意一个字符。 - 表示范围 [a-z]代表匹配一个小写字符

[^] : 逻辑非 表示匹配不是括号中的一个字符。 [^0-9]表示匹配不是数字的字符。

^ : 匹配行首
 
$ : 匹配行尾

48、| 管道符号

命令1 | 命令2 | 命令3 ......

将前面命令返回结果,交给后面命令执行。

注意:
1.管道符返回的都是文本字符串

2.find不能使用管道符  有替代命令 -exec  -ok

49、netstat命令

netstat命令(CentOs 7中,需要安装net-snmp.x86_64,net-tools.x86_64两个包才有此命令)

netstat [选项]

-a : 列出所有网络状态

-c : 秒数 指定每隔几秒刷新一次网络状态

-n : 使用ip地址和port端口号显示

-p : 显示PID和程序名

-t : 显示使用TCP协议端口的连接状况

-u : 显示使用UDP协议端口的连接状况

-l : 仅显示监听状态的连接

-r : 显示路由表  

netstat -an | grep "ESTABLISHED" | wc -l


使用wc命令统计行数,即可统计具体网络连接数量

50、alias命令

alias  别名


查看全部别名;alias


设置定义的别名: alias 别名 = '命令'

注意:这种修改是临时修改,重启服务器将会失效。

永久生效:
修改用户家目录 .bashrc文件

51、linux常用命令

Ctrl+A :把光标移动到命令行开头

Ctrl+E :把光标移动到命令行结尾

Ctrl+L :清屏 相当于clear命令

Ctrl+U: 删除或剪切光标之前的命令

Ctrl+K: 删除或剪切光标之后的命令

Ctrl+Y: 粘贴Ctrl+U或Ctrl+K剪切的命令 

52、zip压缩和解压

linux不靠后缀名区分文件类型,而是靠权限位标识来确定文件类型的。

zip是Windows中最常用的压缩格式,Linux也可以正常识别".zip"格式。

压缩:

zip [选项] 生成压缩包文件 源文件或者源目录

-r :压缩目录

解压:

unzip [选项] 压缩包

-d 指定压缩文件

53、gz、bz2压缩解压

.gz .bz2是linux常用压缩包文件。

.bz2压缩算法比较新,压缩后的文件比较小,但压缩过程消失资源多。

注意:gzip压缩时会直接删除源文件,可以使用-c 命令保存源文件


压缩:
gzip [选项] 源文件或者目录

-c : 用于保留源文件

-d : 解压缩

-r : 压缩目录  

解压:

gunzip 压缩包

gzip -d 压缩包


----------------------------------------------------------------------------------------


.bz2是Linux另外一种压缩格式。


注意:.bz2不能压缩目录

压缩:

bzip2 [选项] 源文件

-d : 解压缩

-k : 压缩时,保留源文件

-v : 显示压缩的详细信息

解压:

bunzip2 压缩包

bzip2 -d 压缩包



54、tar.gz 和 tar.bz2格式

使用tar [选项] 压缩包 源文件或目录

-z : 压缩和解压缩 "tar.gz"格式

-j : 压缩和解压缩 "tar.bz2"格式


压缩:

tar -zcvf 生成压缩包名称  源文件

解压:

tar -zxvf 压缩包名 

tar -ztvf 压缩包  :查看压缩包里面的内容

tar -zxvf 压缩包名 -c 目录  : 解压到指定目录

tar -zxvf 压缩包名 -c 目录  文件名 : 解压部分文件到指定目录


----------------------------------------------------------------------------------


压缩:

tar -jcvf 生成压缩包名称  源文件

解压:

tar -jxvf 压缩包名 

tar -jtvf 压缩包  :查看压缩包里面的内容

tar -jxvf 压缩包名 -c 目录  : 解压到指定目录

tar -jxvf 压缩包名 -c 目录  文件名 : 解压部分文件到指定目录

55、关机和重启命令

sync数据同步

在执行关机或者重启命令前,指定sync命令,将缓存区中的数据写入到硬盘中,避免数据丢失。


shutdown命令 属于安全重启命令

shutdown [选项] 时间

-c :取消已经执行的shutdown命令

-h :关机

-r :重启



常用命令

shutdown -r now 立马重启

----------------------------------------------------------------------------------------

reboot重启命令,也属于安全重启命令。


reboot 重启

----------------------------------------------------------------------------------------
halt 关机命令,不会完整关闭和保存系统中的服务,不建议使用
----------------------------------------------------------------------------------------
poweroff 关机命令,不会完整关闭和保存系统中的服务,不建议使用

56、配置IP

配置IP地址两种方式:


1.setup工具 -上面案例


2.手工修改配置文件


vi /etc/sysconfig/network-scripts/ifcfg-eth0

重启网络

service network restart


有时候重启网络会失败:

1.ip冲突


2.UUID(唯一识别符)冲突 (在你制作镜像会 会导致UUID重复 需要重新配置UUID)

解决方案共三步:

1.删除MAC地址行

vi /etc/sysconfig/network-scripts/ifcfg-eth0

2.删除Mac地址和UUID绑定文件

rm -rf /etc/udev/rules.d/70-persistent-net.rules

3.重启linux

shutdown -r now

57、ifconfig

58、ping

ping [选项] ip

-b :用于对整个网段探测
案例:
ping -b 192.168.6.255

192.168.6.103

192.168.6.104

192.168.6.105

...

-c 次数: 用于指定ping的次数

-s 字节: 探测包的大小

59、痕迹命令

系统中存在一些痕迹日志文件,文件内容是二进制乱码,需要通过指定命令查看。

/var/log/wtmp  /var/run/utmp  /var/log/btmp   /var/log/lastlog等日志。
w命令显示系统中正在登录的用户信息,查看的是/var/run/utmp


user:当前登录的用户

TTY:登录终端  tty1-6:本地字符终端   tty7:本地图形终端 pts/0-255:远程终端

FROM:登录IP地址

LOGIN@:登录时间

IDLE:用户闲置时间

WHAT:用户正在进行的操作

who命令和w命令类型,用户查看正在登录的用户,但是显示的内容更加简单,也是查看/var/run/utmp命令。

last命令查看系统所有登陆过的用户信息,包括正在登陆的用户和之前登陆的用户。这个命令查看的是
/var/log/wtmp痕迹日志文件。

lastlog命令查看系统中所有用户最后一次登陆时间的命令。查看的是 /var/log/lastlog文件

lastb命令查看错误登陆的信息的,查看的是/var/log/btmp痕迹日志.

60、挂载U盘

注意:windows 服务列表中 VMware USB Arbitration Service 必须是开启状态

1.先插入U盘让虚拟机识别

2.fdisk -l 查看U盘名称

3.mount -t vfat -o iocharset=utf8 U盘识别名称 要挂载的空目录   :挂载U盘并指定字符集

4.umount 挂载的空目录  :卸载U盘

61、vim编辑器

vim是一个全屏幕纯文本编辑器。

vim 文件 将进入命令模式。


输入模式 (ESC返回到命令模式):
a : 在光标所在字符后插入
A : 在光标所在行尾插入
i : 在光标所在字符前插入
I : 在光标所在行行首插入
o : 在光标下插入新行
O : 在光标上插入新行


编辑模式:
:w 保存不退出
:w 新文件名  把文件另存为新文件
:q 不保存退出
:wq 保存退出

:q! 强制不保存退出
:wq! 强制保存退出

62、vim命令模式操作

命令模式下:

移动光标

上下左右方向键

h 左移 l 右移 j 下移 k 上移


gg : 移动到文件头

G: 移动到文件尾 (或者shit + g)

^ : 移动到行首

$ : 移动到行尾

:n :移动到指定行(n 是数字)
删除字符

x : 删除单个字符

nx : 删除n个字符


删除单行或者多行,删除的内容在剪切板中 可以使用p 粘贴

dd : 删除单行

ndd : 删除n行

:n1,n2d : 删除指定范围的行

dG : 删除整篇文档

粘贴

p : 粘贴到光标后

P(大) : 粘贴到光标前

复制

yy 复制单行

nyy 复制多行

复制后,使用p或者P(大)粘贴

撤销

u :撤销

ctrl + r :反撤销

替换

r : 替换光标所在处字符

R : 从光标所在处开始替换字符 按ESC结束。

63、vim配置文件

:set nu 显示行号

:set nonu 取消行号

:syntax on 显示文本颜色

:syntax off 取消文本颜色

:set hlsearch 高亮显示搜索内容

:set nohlsearch 取消高亮显示搜索内容

:set list 显示隐藏符号

:set nolist 不显示隐藏符号



永久生效:
在家目录创建 .vimrc文件 将命令写入配置文件中

64、vim使用技巧

/ 查找内容  从光标所在行向下查找

? 查找内容  从光标所在行向上查找


n 下一个

N 上一个


替换(案例)


:1,10s/old/new/g  替换1到10行的所有old字符串为new   g全部替换

:%s/old/new/g 替换整个文件的old字符串为new  g全部替换

:1,10s/^/#/g 注释1到10行

:1,10s/^#//g 取消1到10行注释

:1,10s/^/\/\//g 1到10行 行首加入 //    \属于linux转义符

:1,10s/^\/\///g 取消1到10行的 //



导入其他文件内容

:r 文件名 把文件内容导入光标位置 


多文件打开

vim -o 文件1 文件2

vim -O 文件1 文件2

-o :小写o会上下分屏打开两个文件
-O :大写O会左右分屏打开两个文件


切换两个文件 先按ctrl+w   然后松开 再按 上下或者左右箭头跳转 

65、软件包分类

1.软件包分类

源码包
二进制包



2.二进制包分类:
DPKG包:是由Debian Linux所开发出来的包管理机制。主要应用在Debian和unbuntu中。

RPM包: 是由Red Hat公司所开发的包管理系统。目前很多Linux都在使用RPM包管理方式。



3.rpm包名规则

httpd-2.2.15-15.e16.centos.1.i686.rpm

httpd:软件包名
2.2.15:软件版本
15:软件发布的次数
e16:软件发行商
i686:适合的硬件平台 i686奔腾II以上计算机都可以安装,x86_64(64为CPU可以安装) noarch (无硬件限制)
rpm:rpm包扩展名


4.rpm默认安装位置

/etc/ : 配置文件安装目录
/usr/bin/ : 可执行的命令安装目录
/usr/lib/ : 程序所使用的函数库保存位置
/usr/share/doc/ : 基本的软件使用手册保存位置
/usr/share/man/ : 帮助文件保存位置


5.RPM包安装
rpm -ivh 包全名

-i : install 安装
-v : 显示更详细的信息
-h : 打印 显示安装进度

--nodeps : 不检查依赖性安装。

--replacefiles : 替换文件安装。覆盖某些文件存在,继续安装。

--replacepkgs : 替换软件包安装。如果软件包已经安装,此选项可以把软件包重复安装一遍 

--force : 强制安装 不管是否已经安装,都重新安装


6.服务启动(两种都可以)

systemctl start|stop|restart|status 服务名

service 服务名 start|stop|restart|status

start:启动服务

stop:停止服务

restart:重启服务

status:查看服务状态


7.卸载

rpm -e 包名

--nodeps 不检查依赖性

-e 卸载


8.查询

1.查询软件包是否安装

rpm -q 包名

-q : 查询

2.查询系统中的所有安装软件包

rpm -qa

-a 所有(all)

3.查询软件包的详细信息

rpm -qi 包名

-i 查询软件信息

4.查询没有安装的软件包信息

rpm -qip 包全名

-p :查询没有安装的软件包信息


5.查询系统文件属于哪个RPM包

rpm -qf 系统文件名

-f 查询系统文件属于哪个软件包

6.查询软件包所依赖的软件包

rpm -qR 包名

-R 查询软件包的依赖性

66、yum源文件解析

yum源配置文件保存在/etc/yum.repos.d/目录中,文件扩展名一定是.repo。

[base]:容器名称,一定要放在[]中

name:容器说明,可以自己随便写

mirrorlist:镜像站点。

baseurl:CentOS官方的yum源服务器地址。 注意:mirrorlist与baseurl需注释其中一个。

enabled:如果不写或者写成enabled=1 表示此容器生效,写成enabled=0则表示此容器不生效。

gpgcheck:如果为1表示RPM数字证书生效。如果为0则表示RPM数字证书不生效。   

gpgkey:数字证书的公钥文件保存位置。不用修改。

67、yum命令

1. 查询yum源服务器上所有可以安装的软件包列表

yum list  

2.查询yum源服务器上某个可以安装的软件包

yum list 包名

3.搜索yum源服务器上所有和关键字相关的软件包

yum search 关键字

1.安装命令

yum -y install 包名

-y : 自动回复yes,如果不加-y 那么每个安装的软件都需要手工回答yes


2.升级命令

yum -y update 包名

yum -y update   不加包名,升级本机所有软件包


3.卸载命令

yum remove 包名

68、用户信息文件

/etc/passwd 文件保存了用户所有信息文件


举例:
root:x:0:0:root:/root:/bin/bash


第一列:用户名
第二列:密码标记 代表此用户存在登录密码(密码存在此文件:   /etc/shadow)
第三列:用户ID  0表示超级用户  1~499 系统用户  500 ~ 60000 普通用户
第四列:组ID 添加用户时,如果不指定用户所属的初始组,那么会创建和用户名相同的组.(组信息文件 /etc/group)
第五列:用户说明
第六列:用户家目录
第七列:登录shell 

/bin/bash 该用户可以执行自己的全部权限
/sbin/nologin 该用户不可以登录

注意:
把普通用户变成超级用户,只需要把用户ID 修改成0即可。 登录修改后的普通用户,系统会认为当前登录的时超级用户

69、用户密码文件解析

ldd:$6$mItp.gFi$5QgucbTekR.VxNkEdo1UWhVljzgMM0.5Fg7d4BELz2NEfUr5.KnBHUHYwRBd3AYLmZW7uIbZ4Oq
eJVr2f6rc//:18471:0:99999:7:::


第一列:用户名
第二列:加密后的密码。 可以在加密后的密码前面加上!或者* 或者任意字符,让密码暂时失效用户无法登录。
第三列:密码最近更改时间  1970-01-01作为标准时间
第四列:密码修改的间隔时间。  第三列+第四列后得到一个时间戳,超过这个时间戳后才可以修改密码
第五列:密码有效期 单位为天。 每次重新修改密码后,会从密码更改时间重新计算密码有效期。(也就是
说密码快到有效期 可以重新修改密码,来重新计算密码的有效期)
第六列:密码到有效期前几天警告信息,每次登录时都会提醒密码快要到有效期了。
第七列:密码过期后的宽限天数 在宽限天数内还可以继续登录 默认为空是-1 表示永久宽限天数,到期后也可以登录。
第八列:密码失效时间。写时间戳,如果超过了失效时间,就算密码没有过期,用户也无法使用
第九列:保留

70、用户组信息文件解析

root:x:0:

第一列:组名
第二列: 组密码标记(存在这个文件下 /etc/gshadow。 将一个用户放到某个组下只能root用户操作,但可以
为组设置一个密码,将这个密码交给某个普通用户,那么这个普通用户便可以添加或者移除组中的用户)
第三列:组ID
第四列:附加组用户

初始组:每个用户初始组只能有一个,初始组只能有一个,一般都是和用户名相同的组作为初始组。

附加组:每个用户可以属于多个附加组,要把用户加入组,都是加入附加组。

71、用户管理命令

useradd 选项 用户名

不建议使用选项 直接使用系统默认

-u 550  :指定UID 列如指定550

-g 组名 :指定初始组  不建议手工指定

-G 组名 :指定附加组

-c 说明 :添加说明

-d 目录 :手工指定家目录  目录不需要事先建立 

-s shell :


useradd添加用户默认值文件有两个:

/etc/default/useradd

/etc/login.defs

/etc/default/useradd

/etc/login.defs


MAIL_DIR        /var/spool/mail    新建用户的邮箱目录

PASS_MAX_DAYS   99999   密码有效天数
PASS_MIN_DAYS   0       密码修改间隔时间                   
PASS_MIN_LEN    5       密码最小长度
PASS_WARN_AGE   7       密码到期前警告天数

UID_MIN                   500       创建用户UID 范围
UID_MAX                 60000


GID_MIN                   500       创建用户组GID 范围
GID_MAX                 60000


CREATE_HOME     yes    是否自动创建用户的家目录

UMASK           077    用户家目录权限  777-077=700

USERGROUPS_ENAB yes    删除用户时,是否删除用户的初始组 

ENCRYPT_METHOD SHA512  密码加密方式 

72、设定密码

1.超级管理员可以设置其他用户的密码

passwd [选项] 用户名

-l : 暂时锁定用户

-u : 解锁密码

--stdin : 可以将通过管道符输出的数据作为用户的密码,主要是在shell脚本时用到。



2.普通用户直接修改自己的密码:

passwd  


3.强制用户登录修改密码(root用户操作):

把密码修改日期归零,这样用户登陆就要修改密码

chage -d 0 用户名

73、用户信息修改

usermod 命令修改已经添加的用户信息。

usermod [选项] 用户名


-g 组名:修改用户的初始组   不建议修改

-G 组名:修改用户的附加组

-L:临时锁定用户 

-U:解锁用户

74、删除用户

userdel -r 用户名

-r : 删除用户的同时删除用户的家目录

75、切换用户身份

su [选项] 用户名

- : 表示连用户的环境变量一起切换

76、添加用户组

添加用户组

groupadd 组名

77、删除用户组

删除用户组

groupdel 组名

删除的组不能是其他用户的初始组,可以是附加组。

78、把用户添加进组或者从组中删除

gpasswd [选项] 组名


-a 用户名 : 把用户加入组

-d 用户名 : 把用户从组中删除

79、ACL权限

1.通过上文了解了Linux文件基本的权限。


一个文件或目录权限 = 所属者:所属组:其他用户

注意:一个文件或目录只能有一个所属者,一个所属组(组里面可以有多个用户),和多个其他用户。



2.ACL权限

ACL是用于解决基本权限设定无法满足某种权限要求的问题。


比如 现在有一个文件  

所属者是:root 权限是 7
所属组是:sz 权限是7
其他用户:权限是 0


现在有一个用户ldd,我想让ldd对文件有5的权限,那么这种情况就无法满足。

第一:不能将文件的所属者改成ldd,硬性要求
第二:不能将ldd加入到sz组,因为sz的权限是7,也不能将sz组的权限改成5后加入ldd,这样会影响到sz
组中其他用户的权限。
第三:不能将其他用户的权限改成5,这样修改ldd用户满足了要求,但是其他任意一个用户也对该文件有了
5的权限,所以不能修改。
以上Linux基本权限无法满足要求,那么就只能使用ACL权限,来满足要求了。
--查询是否开启了ACL权限  (默认都是开启)

dumpe2fs -h /dev/sda1

dumpe2fs  命令是查询指定分区详细文件系统信息的命令

setfacl -m u:用户名:权限  文件|目录

setfacl -m g:组名:权限 文件|目录

权限:可以写 rwx 或者 数据(4=r 2=w 1=x)


getfacl 文件|目录  查看文件|目录的ACL权限

setfacl -m u:用户名:权限  -R 目录

setfacl -m g:组名:权限  -R 目录


-R 递归设置目录下所有文件|目录的acl权限

注意:

1. -R 后面跟着目录  如果是文件-R将没有任何意义

2. -R 只能对已存在的文件生效  比如 -R A目录  A目录下已经存在的文件|目录会被递归设置acl权限,

如果-R 已经指定了  然后再在A目录下创建文件是不生效acl权限的。

setfacl -m d:u:用户名:权限  -R 目录

setfacl -m d:g:组名:权限  -R 目录



d: -R 目录递归设置完毕后,在目录下创建新文件|目录 同样会生成acl权限,相当于d:设置了一个默认的递归的acl模板。

最大有效权限mask

设置用户或者用户组对某个文件|目录的acl权限时,是根据mask权限取反得出的。


设置最大mask(一般不需要设置)

setfacl -m m:权限  文件|目录

删除acl权限

setfacl -x u:用户 文件|目录

setfacl -x d:用户组 文件|目录


删除文件|目录所有acl权限

setfacl -b 文件|目录

80、sudo授权

sudo  给普通用户赋予部分管理员命令权限

/sbin/ 此目录下的命令只有超级用户才能使用

赋值:

visudo 赋予普通用户权限命令,命令执行后和vim一样使用

visudo里面默认指定了root用户sudo命令

(1)    (2)    (3)    (4)
root   ALL = (ALL)   ALL

(1)root:用户名
(2)ALL:被管理主机的地址
(3)(ALL):可使用身份,就是把来源用户切换成什么身份使用,(ALL)代表可以切换成任意身份,这个字段可以省略。
(4)ALL: 授权命令,代表root把什么命令授权给普通用户。默认是ALL,代表任何命令,这个当然不行。如果
需要给哪个命令授权,写入绝对路径命令。



给用户组设定sudo命令 前面加上%即可

(1)    (2)    (3)    (4)
%wheel   ALL = (ALL)   ALL

 

普通用户无法通过shutdown关闭服务器

给acl1普通用户添加root权限的shutdown -r now 命令.

visudo

acl1 ALL=(root) /sbin/shutdown -r now


切换到root管理员授权给acl1普通用户。

 

81、sudo授权添加用户权限

1.先查询useradd passwd命令位置

[root@localhostCentos6 ~]# whereis useradd
useradd: /usr/sbin/useradd /usr/share/man/man8/useradd.8.gz
[root@localhostCentos6 ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz
[root@localhostCentos6 ~]# 


2.visudo为acl1用户授权useradd passwd权限

acl1 ALL=(root) /usr/sbin/useradd

acl1 ALL=(root) /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root

[A-Za-z]* : 可以修改任何用户的密码

!/usr/bin/passwd "", !/usr/bin/passwd root  : 不能修改root用户密码 否则会出现大问题
 

 

 

82、SetUID

SetUID

SetUID在某个用户执行某个文件的时候,将用户的身份转变成文件的所有者。只在文件执行的过程中有效。

下面截图表示:

83、Sticky BIT

SBIT 只能针对目录有效,并且该目录的其他用户权限为7 RWX权限。


SBIT权限 限制普通用户只能操作(删除 执行 访问等等。。。)自己创建的文件,无法操作其他用户的文
件。Root用户不限制。


84、chattr权限

命令格式

chattr [+-=][选项] 文件或目录


+:增加权限

-:删除权限

=:等于权限


选项:
i:如果对于文件设置i属性,那么不能对文件删除、改名、添加、修改数据等。包括root超级管理员。
如果对目录设置i属性,那么只能修改目录下文件的数据,不能删除和新建文件,并且不能删除该目录。

a:如果对文件设置a属性,那么只能在文件中添加数据,不能删除和修改数据。如果对目录设置a属性,那么只
允许在目录中新建和修改文件,但是不允许删除文件。


lsattr [选项] 文件名

-a 显示所有文件和目录

-d 若目标是目录,仅列出目录本身的属性,而不是子文件的

85.常用硬盘管理名--df命令

df -hT

-a:显示硬盘全部分区情况,不建议使用-a。 因为-a会查询系统特殊文件系统,会造成干扰项。
-h:人性化显示硬盘分区大小
-T:文件分区类型

86.常用硬盘管理名--du命令

统计文件或者目录的大小

du [选项] [文件或目录]

-a : 显示每个子文件的磁盘占有量

-h : 人性化展示大小

-s : 统计总占有量,而不列出子目录和子文件的占有量



注意:ls -h 只能用来查询文件的大小,展示目录的大小是不准确的。所以需要使用du查询目录的大小。

87.常用硬盘管理名--dumpe2fs命令

--查询磁盘状态
dumpe2fs 磁盘分区

88.常用硬盘管理名--stat命令

-- 查看文件的详细时间
stat 文件名

89.判断文件类型

--查询文件类型

file 文件|目录

--查询命令类型
type 命令

90.fdisk命令

--查看系统所有硬盘及分区
fdisk -l

----------------------------------------------------------------------------------------------------------------------------------------------

91.shell概述

1.什么是Shell?

shell是命令解释器,将应用命令解释成内核可以识别的二进制。

Shell分类可移植性编辑性快捷性
Bourne Shell (sh)较差较差
Korn Shell (ksh)较好较好
Bourne Again (Bash)较好
POSIX Shell (Psh)较好
C Shell (csh)较好较好
TC Shell (tcsh)
Bourne Again (Bash) 是Linux默认Shell


C Shell (csh) 是Unix 默认Shell


Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要有sh、ksh、Bash、psh
、zsh;C家族主要包括:csh、tcsh。
--查看Linux服务支持的shell类型

cat /etc/shells

92.echo命令

echo [选项] [输出内容]

-e : 支持转移字符

-n : 取消输出后行末换行符号(就是内容输出后不换行)
转移字符作用
\\输出\
\c取消输出行末的换行符和“-n”选项一样
\f换页符
\n换行符
\t制表符
\v垂直制表符
\xhh按照十六进制ASCII码输出

echo命令还可以输出带颜色文本


31m:红色
30m:黑色
32m:绿色
33m:黄色
34m:蓝色
35m:洋红
36m:青色
37m:白色

93.shell脚本执行

#!/bin/bash    #shell脚本固定开头 并不是注释 而是表示下文是shell脚本

94.history历史命令

history [选项][历史命令保存文件]

选项:
-c : 清空历史命令 会清空内存中的和家目录下隐藏文件.bash_history
-w : 把缓存中的历史命令写入历史命令保存文件。如果不手工指定历史命令保存文件,则放入默认历史命令
保存文件家目录下隐藏文件.bash_history中



注意:历史命令默认保存1000行,可以修改/etc/profile文件中,HISTSIZE=1000属性。

历史命令的调用

1.使用上、下箭头调用以前的历史命令

2.使用“!n”重复执行第n条历史命令

3.使用"!!"重复执行上一条命令

4.使用"!字符串"重复执行最后一条以该字符串开头的命令

5.使用"!$"重复上一条命令的最后一个参数

95.输出重定向

类型符号作用
标准输出重定向命令 > 文件以覆盖的方式,把命令的正确输出到指定的文件或者设备
标准输出重定向命令 >> 文件以追加的方式,把命令的正确输出到指定的文件或者设备
标准错误输出重定向错误命令 2> 文件以覆盖的方式,把命令的错误输出到指定的文件或者设备
标准错误输出重定向错误命令 2>> 文件以追加的方式,把命令的错误输出到指定的文件或者设备
正确输出和错误输出同时保存命令 > 文件 2>&1以覆盖的方式,把正确输出和错误都保存到同一个文件当中
正确输出和错误输出同时保存命令 >> 文件 2>&1以追加的方式,把正确输出和错误都保存到同一个文件当中
正确输出和错误输出同时保存命令 &> 文件同命令 > 文件 2>&1作用一样
正确输出和错误输出同时保存命令 &>> 文件同命令 >> 文件 2>&1作用一样
正确输出和错误输出同时保存命令 >> 文件1  2>> 文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中

96.多命令执行顺序

命令执行符格式作用
命令1 ;命令2多个命令顺序执行,命令之间没有任何逻辑联系。其中某个命令报错不影响其它顺序命令
&&命令1 && 命令2当命令1正确,则命令2才执行。否则命令2不执行
||命令1 || 命令2当命令1不正确,则命令2才执行。否则命令2不执行

97.bash中其它特殊符号

98.shell变量

1.变量名称可以由字母、数字、下划线组成,但是不能以数字开头。

2.变量默认类型是字符串类型,如果要进行数值运算,则需要指定变量类型为数值型。

3.变量用等号连接值,等号左右两侧不能有空格。

4.变量追加值,可以使用"$变量名"或用${变量名}。

99.变量分类

1.用户自定义变量:由用户自由定义变量名和值。

2.环境变量:这种变量主要保存了系统操作环境相关的数据。

3.预定义变量:是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
用户自定义变量

变量删除:unset 变量名


变量查看:
set [选项]

-u:调用未声明变量时会报错
-x:在命令执行之前,会把命令先输出一次

set不加选项会查询所有的变量

环境变量

使用export声明的变量即是环境变量。

export LDD_NAME="耐得住寂寞";

删除

unset 变量名

查询变量

set命令可以查看所有变量,而env命令只能查看环境变量。

100.系统环境变量--PATH变量

PATH环境变量路径就是系统查询命令的路劲。

101.系统环境变量--LANG语系变量

LANG变量定义了Linux系统的主语系环境


--查询Linux中到底支持多少语系
locale -a 
--查询当前系统支持多少语系
locale


还可以通过/etc/sysconfig/i18n文件查看当前系统主语系。
永久生效语系就需要修改/etc/sysconfig/i18n文件

102.位置参数变量

位置参数变量作用
$nn为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}
$*这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
$@这个变量也代表命令行中所有的参数,只不过每次都会把参数赋值给$@
$#这个变量代表命令行中所有参数的个数

$n案例

$*$@$#案例

103.预定义变量

预定义变量作用
$?返回最后一次执行命令的状态。如果返回的状态为0,证明上一个命令正确执行。如果这个变量的值非0,则证明上一个命令执行错误了。
$$当前进程的进程号(PID)
$!后台运行的最后一个进程的进程号(PID)

104.接收键盘输入

read [选项][变量名]

-p  "提示信息" :在等待read输入时显示提示信息

-t 秒数 :秒数 等待用户输入秒数

-n 字符数:限制输入字符数

-s : 隐藏输入的数据 类似于登录Linux输入密码

105.declare声明变量类型

declare声明变量类型


变量默认为字符串型,可以使用declare命令声明变量类型。


declare [+/-][选项] 变量名

选项:

-: 给变量设定类型属性

+: 取消变量的类型属性

-a:将变量声明为数组型

-i:将变量声明为整数型(integer)

-r:将变量声明为只读类型。一旦什么为只读类型,便不能修改变量的值。

-x:将变量声明为环境变量 export实质就是使用declare -x

106.数值运算

方式1
declare -i

方式2
expr运算命令

方式3
let运算符

方式4
$((运算符))

方式5
$[运算符]

107.Shell常用运算符

数值越大优先级高

108.变量的测试与内容置换

109.环境变量配置文件

重新加载环境变量配置文件

source 配置文件

或者

.  配置文件


Linux系统主要有以下几个环境变量文件

/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
~/.bash_profile
~/.bashrc

110.shell编程之基础正则

* 匹配前一个字符0次或者任意多次。

. 匹配除了换行符外任意一个字符。

^ 匹配以什么字符开头

$匹配以某个字符结尾

[] 匹配中括号中指定的任意一个字符

[^]匹配除中括号内以外的字符

^$表示匹配空白行

\{n\} 表示匹配前面字符n次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值