linux笔记
远程
scp全称(secure cp)远程copy
-
安装:
yum -y install openssh-clients -
用法:
scp 文件 用户名@主机:远端文件夹 -
示例
scp test.txt root@192.168.0.11:/root #将文件test.txt拷贝到192.168.0.11的root文件夹下 scp -r test root@linux01:/usr #将test文件夹拷贝到主机名为linux01机器上,文件夹需要加上-r参数 scp /etc/sysconfig/network-script/ifcfg-etc0 root@192.168.0.12:$PWD #将本地文件ifcfg-etc0拷贝到远程同级目录下注意:如果不输入用户名(root),即使用本地当前用户名
ssh(secure shell)远程执行指令
-
用法:
ssh 用户名@主机 需要执行的命令 -
示例
ssh root@192.168.0.11 "mkdir /usr/local/apps" #在192.168.0.12上面创建apps文件夹 ssh root@linux01 #远程登录linux01这台主机,使用exist退出
日期
date设置服务器时间
-
用法:
date查看当前日期date -s HH:mm:ss设置时分秒date -s yyyy-MM-dd设置年/月/日 -
示例:
date #Mon May 14 03:38:57 CST 2018 当前日期 date -s 15:33:25 #设置时间 date -s 2018-05-13 #设置年月日,但是时间会清空
ntpdate同步服务器时间
-
安装:
yum -y install ntpdate -
用法:
ntpdate 服务器 -
常用的时间服务器
ntpdate us.pool.ntp.org
1.cn.pool.ntp.org
2.cn.pool.ntp.org
3.cn.pool.ntp.org
0.cn.pool.ntp.org
cn.pool.ntp.org
tw.pool.ntp.org
0.tw.pool.ntp.org
1.tw.pool.ntp.org
2.tw.pool.ntp.org
3.tw.pool.ntp.org
yum源永久挂载(虚拟机)
- 查看:
yum repolist - 清除yum源缓存:
yum clean all - 挂载:
mount /etc/cdrom /mnt/dvd - 永久生效:
vi /etc/fatab- 添加
/dev/sr0 /mnt/dvd iso9660 ro 0 0(空格全为Tab)
shell
shell是一门编程语言, 解释执行。不需要编译,直接运行
注意:为了能在当前目录下执行脚本,需要将当前目录加入到环境变量中,即PATH=.:$PATH
位置
cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
变量
定义
- 数字+ 字母 + 下划线 数字不能作为开头
- 变量都是字符串类型 num1=100 num2=1 num1+num2 = 100 + 1
- 变量名=变量值 等号两边不能有空格
获取
$name "$name" ${name}
set 获取系统中的所有变量
readonly B=2定义一个不可删除的变量B
删除
unset 变量名
不可删除readonly变量
$()和${}和$(())
- $() 的用途和反引号``一样,用来表示优先执行的命令
- ${ } 就是取变量,如$
- $(()) 适用于数值运算
A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量A
A=$(ls -la) 等价于反引号
aa=$((4+5))
bb=`expr 4 + 5 `
参数
| $n | n为数字,$0代表命令本身,$1-$9代表第一到第9个参数,十以上的参数需要用大括号包含,如${10}。 |
|---|---|
| $* | 代表命令行中所有的参数,把所有的参数看成一个整体。以"$1 $2 … $n"的形式输出所有参数 |
| $@ | 代表命令行中的所有参数,把每个参数区分对待。以"$1" "$2" … "$n" 的形式输出所有参数 |
| $# | 代表命令行中所有参数的个数。添加到shell的参数个数 |
shift指令:参数左移,每执行一次,参数序列顺次左移一个位置,$# 的值减1,用于分别处理每个参数,移出去的参数不再可用
- $* 和 $@的区别
$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号" "包含时,都以"$1" "$2" … "$n" 的形式输出所有参数
当它们被双引号" "包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数
预定义变量
| $? | 执行上一个命令的返回值 执行成功,返回0,执行失败,返回非0(具体数字由命令决定) |
|---|---|
| $$ | 当前进程的进程号(PID),即当前脚本执行时生成的进程号 |
| $! | 后台运行的最后一个进程的进程号(PID),最近一个被放入后台执行的进程 & |
read命令
参数:
-n可输入的字符个数-t等待时长,单位为秒-s隐藏输入(如:密码)-p提示语,一般作为最后一个参数
read –t 30 –p “please input your name: ” NAME
echo $NAME
read –s –p “please input your age : ” AGE
echo $AGE
read –n 1 –p “please input your sex [M/F]: ” GENDER
echo $GENDER
test条件
- expression首尾都有个空格
- 测试范围:整数、字符串、文件
- 表达式的结果为真,则test的返回值为0,否则为非0。
- 当表达式的结果为真时,则变量$?的值就为0,否则为非0
test str1 == str2 |
测试字符串是否相等 |
|---|---|
test str1 != str2 |
测试字符串是否不相等 |
test str1 |
测试字符串是否不为空,不为空,true 0,false 1 |
test -z str1 |
测试字符串是否为空 |
条件控制
if/else
if [ 条件判断式 ]
then
#程序1
elif [ 条件判断式2 ]
then
#程序2
fi
或者
if [ 条件判断式 ] ; then
#程序
fi
for循环
#第一种:
for N in 1 2 3
do
echo $N
done
#或
for N in 1 2 3; do echo $N; done
或
for N in {1..3}; do echo $N; done
#第二种:
for ((i = 0; i <= 5; i++))
do
echo "welcome $i times"
done
#或
for ((i = 0; i <= 5; i++)); do echo "welcome $i times"; done
while循环
while expression
do
#command
done
#例如:求1到10的和
i=1
sum=0
while((i<=10))
do
sum=$((i + sum))
i=$((i + 1))
done
定时器
crontab –e
- 用法:
分< >时< >日< >月< >星期< >要运行的命令 < >表示空格
其中
Minute 一小时中的哪一分钟 [0~59]
hour 一天中的哪个小时 [0~23]
day-of-month 一月中的哪一天 [1~31]
month-of-year 一年中的哪一月 [1~12]
day-of-week 一周中的哪一天 [0~6] 0表示星期天
commands 执行的命令
-
示例
45 4 1,10,22 * * /apps/bin/backup.sh #每月 1、1 0、2 2日的4:45运行/apps/bin目录下的backup.sh
调试
sh -x script这将执行该脚本并显示所有变量的值sh -n script不执行脚本只是检查语法的模式,将返回所有语法错误sh –v script执行并显示脚本内容