php运维知识,分享一些linux运维的基础知识

1、回顾基础命令

2、脚本

3、变量

4、别名

5、条件判断

6、test判断

一、回顾基础命令

shutdown --关机/重启

exit --退出当前shell

rmdir --删除空目录

du --查看目录占用的存储空间

df --查看已 经挂载的文件系统的空间使用情况

ln --创建链接

cat --显示文件的所有内容

head --显示文件的头部

tail --显示文件的尾部

less --分屏/分页 显示文件内容

dirname --取出目录

basename --取出文件名

history --历史命令

1、ln

# ln -s [目标] [源 -- 创建软链接 (symbolic link)

# ln [目标] [源] -- 创建硬链接

2、cat

concatinate,把文件的内容按顺序连接起来,输出到标準输出。目前,只需要简单理解成显示文件的内容即可

# cat f1 -- 显示文件 f1 的内容到屏幕上

# cat -n f1 -- 显示文件的内容,并且加上行号

# cat -A f1 -- 打印出一些不可见的字符和位置标记

3、head

读取文件的头部

# head -n 3 /etc/passwd --读取文件前面三行

# head -n -3 /etc/passwd --读取文件时,丢掉文件的后三行;

# head -c 3 /etc/passwd --读取文件的前面三个字节

# head -c 10m /dev/zero > f1 --创建一个10M的文件

4、tail

读取文件的尾部

# tail -n 3 /etc/passwd -- 读取文件的后面三行

# tail -c 3 /etc/passwd -- 读取文件的后面三个字节

# tail -n +28 /etc/passwd -- 读取文件中从第28行开始直到结尾的所有行

# tail -f /etc/passwd -- 跟踪文件尾部内容的变化,常用观察日志文件的变化

5、history

# set -o history --启用命令历史功能 ,默认记录在文件 ~/.bash_history 中

# set +o history --关闭命令历史功能

# history --显示最近n条历史命令

注:以下三个变量用于控制命令历史的数量,以及是否记录时间戳

# vim /etc/bashrc --一般配置在该文件当中,用户级可配置在 ~/.bashrc

HISTSIZE=1000000 --最多存储多少条记录

HISTFILESIZE=2000000 --命令历史文件的最大尺寸

HISTTIMEFORMAT='[%Y-%m-%d %H:%M:%S] ' --命令历史的时间戳格式

export HISTSIZE HISTFILESIZE HISTTIMEFORMAT --把他们定义成环境变量

二、脚本

1、如何执行脚本

# vim test.sh

#!/bin/bash

echo 'hello world'

# bash test.sh

# bash -x test.sh --显示脚本执行过程的信息

# sh test.sh

# source test.sh

# . test.sh

--上述兼为非标准执行脚本,脚本文件可以没有可执行权限;下列为标准执行:

# head -n 1 test.sh

#!/bin/bash

# chmod a+x test.sh

# ./test.sh

可直接将脚本放到 PATH 路径下,直接当命令运行

注意:shell 必须以 #! 开头,读作sha-bang,这两个字符用来标识文件类型,#! 用来告诉系统,这个文件里的内容将要用指定的解释器来解释,#! 之后的字符串将会被解释成一个程序,该程序用来解释当前文件。如果没有提供sha-bang这一行,当前 shell 将会自主猜测一个,但结果并不保证和预期一致;所以最好明确指定。./test.sh 的运行流程:

1、内核读取该脚本,检查文件类型标记,获取解释气得路径;

2、内核运行解释器;

3、解释器运行起来后,就打开脚本文件,解释其执行

linux 自带的诸多解释器:#!/bin/bash;#!/bin/sh;#!/usr/bin/perl;#!/bin/sed;#!/bin/awk

2、四则运算符

+ - * /

$(()) $[] expr let

# echo $((38%5)) --取余

# echo $[38/5] --求商

# echo $((10**2)) --10的平方

2.1、expr

# expr 14 % 9 --取余

# expr 34 / 9 --求商

# expr 30 \* 3 --使用乘号时,必须用反斜线屏蔽其特定含义

# expr index "sarasara" a --抓取第一个字符数字串出现的位置

# expr substr "this is a test" 3 5 --抓取字串

# expr length "this is a test" --计算字串长度

2.2、let

let计算工具用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来

# no=20

# let no++ --自增

# let no-- --自减

# let no+=10 --自增10

# let no=no+10 --同上

# let no-=15 --自减15

# let a=5+4 --变了a无须加 $ 符号

# echo $a

3、shell配置文件

/etc/profile --全局配置文件,

/etc/bashrc --全局配置文件,一般用来定义环境变了

~/.bash_profile --用户配置文件

~/.bashrc --用户配置文件

~/.bash_logout --用户配置文件,login shell 退出时会读取该文件

4、shell种类

根据shell 的启动方式不同,可以大致地把shell分为以下几种:

login shell --在文本界面登录,如su -;读取shell配置文件顺序如下:

/etc/profile——~/.bash_profile——~/.bashrc——/etc/bashrc

interactive shell --gnome-terminal 中默认的shell;读取shell配置文件顺序如下:

~/.bashrc —— /etc/bashrc

non-interactive shell --用来运行脚本的shell

4.1、在~/.bashrc 中设置一个变量 v,要求该变量只出现在交互shell中

# vim ~/.bash_profile --标识shell 是否登录shell

LOGINSHELL=1

# vim ~/.bashrc --不是登录shell 时,才设置变量

if [ "$LOGINSHELL" != 1 ];then

v="interactive shell only"

fi

5、命令优先级

别名 > 函数 > 内部命令 > 外部命令

6、shell特殊字符

对于shell来说,有些字符除了它本身的意义之外,还有特殊的意义,如果要在字符串中包含特殊字符,就必须通过引用(quoting)的方法来去除特殊字符的特殊意义。以下列出的是部分特殊字符:

~ --不被引用的话将会被shell 替换成家目录

& --把程序放到后台执行

$ --dollar 符,可用于参数展开

${} --变量处理,可对变量的内容做替换,删除,抽取等操作

* --星号,通配符,匹配所有字符

? --问号,通配符,匹配任意一个字符

() --命令组

{} --命令组

"" --双引号,引用符号;可以去除大多数特殊字符的特殊意义,除 $;`;!;\ 外

'' --单引号,引用符号;可以去除所有特殊字符的特殊意义,除自己本身

. --相当于source命令;可用于设置隐藏文件;用于目录名时,代表当前目录

/ --斜杠,路径分隔符,根目录

\ --反斜杠,可用来去除单个字符的特殊意义,也就是所谓的“转义“,也可用于表示特殊字符,如换行符 (\n)

`` --反撇号,命令优先执行,和$()含义是一样的;如果有嵌套那么不能用``号

$(())和 $[] --运算符

: --空命令

; --命令分割;不去考虑上一条命令所执行的结果

;; --case 选项的结束符

# --注释

&& --逻辑与;可对命令进行分割;但是需要考虑上一条命令所执行的结果

|| --逻辑或;可对命令进行分割;不需要考虑上一条命令执行结果

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

# echo 'hello world;' "hello world;" hello\ world; --用三种引用符合去除空格的特殊意义

三、变量

1、本地变量

当前用户自定义的变量;当前进程有效,其他进程或者当前进程的子进程无效

# a=123

# echo $a

# unset a --取消变了定义

2、环境变量

当前进程有效,并且能被子进程调用;

# env --查看当前系统所有环境变量

# set --查看当前系统所有环境变量和临时变量

# echo $PATH -- 显示PATH变量的内容

# export hi=hello --定义环境变量;工作当中一般喜欢把即用的环境变了写在 ~/.bash_profile

几个常见环境变量:

PATH --影响命令的搜索

PS1 --命令提示符

TMOUT --超时时间,单位为S,时间一到,自动退出 interactive shell ;所以最好将其设为只读变量 # declare -r TMOUT=60

HISTSIZE, HISTFILESIZE, HISTTIMEFORMAT --命令历史

3、系统变量

又叫bash中内置的变量;shell本身已经固定好的一些变量

$# --脚本后面接参数个数

$* --脚本后面所有的参数(被双引号包含则被当成一个字符串输出)

$@ --脚本后面所有的参数(被双引号包含还是保留各参数的边界)

$? --上一条命令执行后返回的状态

$$ --当前进程的进程号

$! --后台运行的最后一个进程号

!$ --最后一条命令或参数

!! --最后一条命令的历史记录

$0 --当前程序的程序名或进程

$1~$n --位置参数变量

#!/bin/bash

echo "\$0 = $0"

echo "\$# = $#"

echo "\$* = $*"

echo "\$1 = $2"

echo "\$7 = $7"

echo "\$11 = ${11}"

# chmod a+x test.sh

# ./test.sh a b c

4、变量定义

a、默认下,变量类型没啥要求。可以给变量赋任何值,但是等号两边不能有任何的空格

b、变量名区分大小写

c、变量名不能以数字或者特殊符号开头

d、将命令所执行的结果保存到变量

5、调用变量

# a=$(hostname)

# A=123456789

# echo $A

# echo ${A:2:3}

6、数组

数组的定义:用小括号扩起来定义数组,括号里的元素用空格隔开

# array[0]=var1

# array[1]=var2

# array[2]=var3

# array=(var1 var2 var3) --等同于上述三行,定义数组

# echo ${array[0]} --取数组第一个值

# echo ${array[*]} --取数组所有值

# echo ${array[@]} --同上

7、declare 定义有类型的变量

-i --将变量看成整数

-r --定义只读变量

-x --将变量导出到环境变量

-a --将变量看成数组

8、read 交互式定义变量

-p --提示信息

-n --字符数

-t --超时

-s --不显示

四、別名

命令的別名,顾名思义,就是可以通过別的名字来执行命令。通常用于简化命令的输入,或者为命令增加一些参数,或者是单纯地为命令添加多个访问名称。

# alias cp mv rm --查看cp, mv, rm这三个命令是不是別名

# unalias rm -- 删除别名 rm

# alias cdyum='cd /data/yum' -- 简化输入

# alias rm='rm -i' -- 为命令增加参数

-- 通常別名是在配置文件~/.bashrc 中设置的

1、验证别名、函数、内部命令、外部命令的优先级别

# alias pwd='echo it is an alias' --创建一个 pwd 别名

# function pwd() { echo "this is a function"; } --创建一个 pwd 函数

# pwd --运行pwd,发现输出是别名

# unalias pwd --删除别名,再运行 pwd,发现输出是函数内容

# unset pwd --删除函数,再运行 pwd,才是输出当前所在路径

所以:别名 > 函数 > 内部命令 > 外部命令

五、条件判断

# vim test

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

if [ 条件 ];then

command...

fi

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

if [ 条件 ];then

command...

else

command...

fi

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

if [ 条件1 ];then

command1...

elif [ 条件2 ];then

command2...

else

command3...

fi

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

if [ 条件1 ];then

command1...

if [ 条件2 ];then

command2...

fi

else

if [ 条件3 ];then

command3...

elif [ 条件4 ];then

command4...

else

command5...

fi

fi

六、test判断

test == [ judge ]

1、文件存在与否的判断

# vim test.sh

#!/bin/bash

if test -e $1;then --是否存在;还有 -p;-c;-b;-L

if [ -f $1 ];then --使用 [ judge ] 替换

if test -f $1;then --是否存在并且为普通文件

if test -d $1;then --是否存在并且为目录

if test -S $1;then --是否存在并且套接字文件

echo 'YES'

fi

# chmod a+x test.sh

# ./test.sh [path]

2、文件权限相关判断

-r;-w;-x --是否有读,写,执行权限

-u --是否有suid

-g --是否有sgid

-k --是否有t位

-s --是否为空白文件,-s表示非空;! -s 空文件

3、字符串判断

= --等于则为真,等于号两边必须有空格;也可以是:==

!= --不相等则为真

-z 字符串 --字符串的长度为零则为真

-n 字符串 --字符串的长度不为零则为真

if test $num1 = $num2;then

if [ $num1 = $num2 ];then

if [ -n $num1 ];then

4、数值判断

-eq --等于则为真

-ne --不等于则为真

-gt --大于则为真

-ge --大于等于则为真

-lt --小于则为真

-le --小于等于则为真

if test $[num1] -eq $[num2];then

if [ $[num1] -eq $[num2] ];then

5、逻辑判断

-a 和 && --逻辑与

-o 和 || --逻辑或

! --非

优先级:与>或>非

if test -e $1 -o -e $2;then --判断是否有一个文件存在

if [ -e $1 -o -e $2 ];then --同上

if test ! -e $1 -o ! -e $2;then --判断两个文件没有同时存在

if [ ! -e $1 -o ! -e $2 ];then --同上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值