
正文
linux中永不超时命令 linux保持不掉线命令
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
linux的shell脚本中等待子程序执行超时
判断进程是否存在。示例linux中永不超时命令:
timer=20 #20s定时器
flag=1 #标识进程是否存在
while [ $timer -gt 0 ]
do
sleep 2
ps -aux | grep 进程名 | grep -v grep /dev/null #查询进程
[ $? -ne 0 ] flag=0 break #进程不存在linux中永不超时命令了就退出循环
let timer-=1
done
[ $flag -eq 1 ] kill -9 $(ps -aux | awk '/ bash$/{print $1}')
相关问答
Q1: Linux 史上最全命令大全
1、ls命令
cd /root
ls #显示当前目录下所有的非隐藏文件
ls -a #显示当前目录下所有文件linux中永不超时命令,包含隐藏文件
ls -l #显示当前目录下所有的非隐藏文件的详情
ls -al #显示当前目录下所有文件linux中永不超时命令,包含隐藏文件 的详情
ls -lh #以列表形式显示当前目录下所有的非隐藏文件的大小(K M T)
ls -alh #以列表形式显示所有文件,包含隐藏文件的文件大小(K M T)
常用的组合:
ls
ll #等价于 ls -l
ls /etc #显示/etc目录下的文件
2:pwd命令
用来显示当前所在的路径
绝对路径: 从/目录开始的路径
/root
/etc/sysconf
/opt/server/data-integration/libswt/win64
相对路径: 相对当前的路径
3、mkdir命令
cd /root
mkdir mytest #在当前目录创建文件夹
mkdir -p 111/222/333 #一次创建多级文件夹
mkdir /root/mydemo #使用绝对路径来创建
mkdir mydemo2 #使用相对对路径来创建
4、rm命令
这个命令既可以删除文件,也可以删除目录
删文件:
cd /root
rm a.txt #删除时,会给出提醒确认,输入y删除,n不删除
rm -f b.txt #强制删除 等价于 rm -f /root/b.txt
rm ../dir2/b.txt
touch a.java b.java c.java
rm a.java b.java c.java #一次可以删除多个文件
rm *.java -fr #可以删除当前目录下的所有.java文件
cd dir
rm * -fr #删除当前目录的所有内容
删目录:
rm -r 111 #删除目录,依次提醒删除
rm -rf mytest #强制删除 等价于 rm mytest -fr
常用组合:
rm -fr 文件或目录
5、cd命令
cd 命令可以进入一个目录,类似于对windows上的文件夹进行双击
cd #直接cd 可以从任何一个目录回到/root目录
cd /root #进入root目录
cd /opt/server/data-integration/system/
cd .. #回到上一级目录
cd ../.. #回到上上一级目录
cd - #可以在最近的两次目录之间切换
cd /root
mdkir dir1 dir2
cd dir1
cd ../dir2 #使用相对路径 /中国/广东省/深圳市/宝安区/留仙二路/78号
6、历史命令和table补全
使用上下方向键可以找出历史命令
table键:
cd /opt/ #两次table可以列出/opt目录下所有的文件和子目录
cd /opt/s #一次table可以自动补全目录内容,前提是/opt目录下只有一个s开头的目录
7、touch命令
cd /root
touch a.java #在当前目录创建a.txt文件
touch b.java c.java #创建多个文件
touch /root/d.java #通过绝对路径创建
8、mv命令
移动:
1、mv 文件 目录 #将文件移动到目录中区
cd /root/dir1
touch a.txt
mv a.txt /root/dir2 #等价于 mv a.txt ../dir2
2、 mv 目录1 目录2 #将目录1移动到目录2下面(前提是目录2必须存在)
cd /root
mv dir2 dir1 #将dir2移动到dir1下面
重命名linux中永不超时命令:
1、mv 文件1 文件2 #给文件重命名(文件2不能存在)
cd /root
mv a.txt aaa.txt #将a.txt 重命名为aaa.txt
2、mv 目录1 目录2 #给目录重命名(目录2不能存在)
cd /root
mv dir1 dirx #将dir1重命名为dirx
9、cat命令
显示文件内容
cd /root
cat user.txt
10、cp命令
复制文件
cd /root
cp user.txt user2.txt
cp user.txt /opt/ #将当前目录的user.txt 复制到/opt目录,文件名保持不变
cp user.txt /opt.user2.txt #将当前目录的user.txt 复制到/opt目录,文件名改为user2.txt
cp /opt/server/data-integration/pan.sh ./ #将指定目录里的文件复制到当前目录(.后边的/可以去掉)
cp /opt/server/data-integration/pan.sh ./dirx #将指定目录里的文件复制到当前目录下的dirx目录(.后边的/比可以去掉)
cp /opt/server/data-integration/pan.sh /root/dirx #作用同上
11、解压和压缩
Linux的压缩包后缀一般是: .tar.gz
解压:
.tar.gz
将snappy-1.1.1.tar.gz上传到/root/dir1目录
tar -zxvf snappy-1.1.1.tar.gz #默认解压到当前目录
tar -xvf snappy-1.1.1.tar.gz #默认解压到当前目录
tar -xvf snappy-1.1.1.tar.gz -C /opt #将压缩包解压到/opt目录
.zip格式
unzip mysql-connector-java-8.0.13.zip #默认解压到当前目录
unzip -d /opt mysql-connector-java-8.0.13.zip #解压到指定目录
压缩:
.tar.gz
tar -czvf snappy-1.1.1.tar.gz snappy-1.1.1 #将snappy-1.1.1文件夹进行打包压缩
tar -czvf /root/dir/snappy-1.1.1.tar.gz /opt/server/snappy-1.1.1
.zip格式
zip -r mysql-connector-java-8.0.13.zip mysql-connector-java-8.0.13/
12、find命令
用来实现文件的查找
find / -name 'a.txt' #从/目录开始查找a.txt文件
find / -name 'ins*' #从/目录开始查找以ins开头的文件
find / -type f -size +100M #查找/目录下文件大小大于100M的文件
13、grep命令
grep lang anaconda-ks.cfg #从anaconda-ks.cfg文件中查找包含lang的内容
14、ps命令
ps #查看依赖终端的进程
ps -ef #查看Linux系统中所有的进程
15、kill命令
kill -9 进程的pid #每次启动进程时,pid会发生变化,但是进程运行期间pid不会变化
16、管道 |
管道就是把前边命令的结果作为后边命令的输入
ps -ef | grep mysql #查找和mysql相关的进程
ll /etc | grep java #在/etc目录中查找java相关的文件
17、用户的操作
用户创建和密码设置
useradd itheima #创建新用户itheima
passwd itheima #设置用户itheima密码
用户删除
userdel -r itheima #删除用户itheima
18、文件的权限
所属用户: root 文件的创建者
所属用户组: root 和文件创建者在一个组的用户
其linux中永不超时命令他用户: itcast 既不是文件创建者,也和文件创建者不在同一组
r: 可读
w:可写
x: 可执行
chmod命令:
方式1:
chmod u+rw a.txt #在所属用户之前的权限基础上添加可读和可写权限
chmod u=rw a.txt #将所属用户的权限直接修改为可读,可写
chmod +x #给所属用户,所属用户组和其linux中永不超时命令他用户全部加上可执行权限
方式2:
chmod 777 a.txt #给所有用户加上所有权限
19、clear命令
用来清屏
快捷键: ctrl + l
20、history命令
用来查看所有的历史命令
21:vi编辑器的使用
vi a.txt #打开a.txt文件
vim a.txt #vim是vi的增强
22、网络管理命令
hostname :查看主机名
修改主机名: /etc/hostname
ifconfig :查看ip地址
修改ip地址: /etc/sysconfig/network-scripts/ifcfg-ens33
服务问题:
service network restart
Q2: Linux常用网络配置命令
一、查看网络配置
确保网络配置的正确性及网络连接的畅通是Linux系统作为服务器应用的基础linux中永不超时命令,查看及测试网络配置是管理Linux网络服务的第一步。
1.ifconfig——查看网络配置
1) 查看所有活动网络接口的信息
执行 ifconfig 或ip addr或ip a命令linux中永不超时命令,都可以显示当前主机中已启用(活动)的网络接口信息。、
2) 查看指定网络接口信息
格式:ifconfig 网络接口名
可以通过TX、RX等信息linux中永不超时命令了解到通过该网络接口发送和接收的数据包个数linux中永不超时命令,流量等跟多属性。
2.hostname命令
在Linux系统中,相当一部分网络服务都会通过主机名来识别本机,如果主机名配置不当,可能会导致程序功能出现故障。
1) 查看主机名
使用hostname命令就可以查看当前主机的主机名,不添加任何选项参数。
2) 临时更改主机名
hostname NewName
注:这种方法只是临时的更改主机名,重启后将失效。
3) 永久更改主机名
a. 修改配置文件
RHEL6和7的配置文件存放路径不相同,修改配置文件中的主机名,重启就可永久更改主机名。
RHEL6主机名配置文件路径为:/etc/sysconfig/network
RHEL7主机名配置文件路径为:/etc/hostname
示例
b. 使用命令修改(这种方法只适用于RHEL7或者CentOS7之后)
命令格式:
使用该命令更改后,更改后的主机名就自动写入了配置文件中,所以可以永久更改主机名,其实就是修改了配置文件。
3.route命令
直接执行route命令可以查看当前主机中的路由表信息,若结合“-n”选项使用,可以将路由记录中的地址显示为数字形式,这可以跳过解析主机名的过程,在路由表条目较多的情况下能够加快执行速度。
Destination列对应的是目标网段的地址,Gateway列对应的是吓一跳路由器的地址,Iface列对应的是发送数据的网络接口。当目标网段为“default”是,表示此行是默认网关记录,当吓一跳为“*”是,表示目标网段是与本机直接相连的。
4.netstat命令——查看系统的网络连接状态等
netstat命令是了解网络状态及排除网络服务故障的有效工具。
常用选项:
-a:显示所有活动连接(包括监听、非监听状态的服务端口)
-n:以数字形式显示
-p:显示相关的进程信息
-t:查看 TCP 协议相关信息
-u:查看UDP协议相关信息
-r:显示路由表信息
-l:显示处于监听(listening)状态的网络连接及端口信息
通常使用“-anput”组合选项,结合管道使用“grep”命令,来查看一些服务的端口是否开启。
示例:
Tcp21为ftp服务的端口
二、测试网络连接
1.ping命令——测试网络连通性
常用选项:
-c完成次数:设置完成要求回应的次数
-i间隔秒数:指定收发信息的间隔时间
-q:不显示指令执行过程,开头和结尾的相关信息除外
-s数据包大小:设置数据包的大小
-t存活数值:设置存活数值TTL的大小
-v:详细显示指令的执行过程
若返回“Destination Host Unreachable”的反馈信息,则表示目标主机不可达,可能目标地址不存在或主机已关闭linux中永不超时命令;返回“Network is unreachable”的反馈信息,则表示没有可用的路由记录(如默认网关),无法到达目标主机所在的网络;返回“Request timeout”的反馈信息,表示与目标主机间的连接超时(数据包缓慢或丢失),若有严格的防火墙限制,也可能返回此信息。
2.traceroute命令——跟踪数据包的路由途径
使用traceroute命令可以测试从当前主机到目的主机之间经过的网络节点,并显示各中间结点的连接状态(响应时间)。对于无法响应的节点,连接状态将显示为“*”。
示例:traceroute IP_ADDR
在网络测试与排错的过程中,通常会先使用ping命令测试与主机的网络连接,如果发现网络有故障,再使用traceroute命令跟踪查看是在哪个中间结点存在故障。
3.nslookup命令——测试DNS域名解析
nslookup是用来测试(DNS)域名解析的专用工具。(DNS服务后面再详细讲解,通俗的说就是将域名解析为ip地址的一个服务)
示例:nslookup
若成功反馈要查询域名的IP地址,则表示域名解析没有问题;若出现“...... no servers could be reached”的信息,表示不能连接到指定的DNS服务器;若出现“...... cant’t find xxx.yyy.zzz:NXDOMAIN”的信息,表示要查询的域名不存在。
三、设置网络地址参数
设置网络参数的方法:
• 临时配置 —— 使用命令调整网络参数简单、快速,可直接修改运行中的网络参数
一般只适合在调试网络的过程中使用
系统重启以后,所做的修改将会失效
• 永久配置 —— 通过配置文件修改网络参数修改各项网络参数的配置文件
适合对服务器设置固定参数时使用
需要重载网络服务或者重启以后才会生效
1.临时配置——使用网络配置命令(注:RHEL6中网络接口的名称为eth,RHEL7中为ens)
1)使用ifconfig命令修改网卡的地址、状态
ifconfig命令不仅可以用于查看网卡配置,还可以修改网卡的ip地址,子网掩码,也可以绑定网络接口、激活或停用网络接口
a. 修改网卡的ip地址(临时修改)
命令格式:
示例:
b. 禁用或者重新激活网卡
命令格式:
示例:
c. 设置虚拟网络接口(相当于一块网卡配置多个IP地址)
命令格式:
示例:
可以根据需要添加更多的虚拟接口,如“eth0:1”“eth0:2”等
2)使用route命令添加、删除静态路由记录
• 删除路由表中的默认网关记录命令格式:route del default gw IP地址
• 向路由表中添加默认网关记录命令格式:route add default gw IP地址
• 添加到指定网段的路由记录命令格式:route add -net 网段地址 gw IP地址
• 删除到指定网段的路由记录命令格式:router del -net 网段地址
2.永久配置——修改网络配置文件
1)网络接口配置文件
网络接口的配置文件默认位于目录“/etc/sysconfig/network-scripts/”中,文件名格式为:“ifcfg-XXX”,其中“XXX”是网络接口的名称。例如:RHEL6中网卡eth0的配置文件是“ifcfg-eth0”,而RHEL7中网卡ens33的配置文件是“ifcfg-ens33”。
在网卡的配置文件中,可以看到静态IP地址的部分内容如下图所示:
上述个配置项的含义及作用:(图示为RHEL6中的配置文件,7中也差不多,换汤不换药,修改的都差不多)
• DEVICE:设置网络接口的名称ONBOOT:设置网络接口是否在Linux系统启动时激活BOOTPROTO:设置网络接口的配置方式,值为static时表示使用静态ip地址,为dhcp时表示通过dhcp的方式动态获取ip地址IPADDR:设置网络接口的ip地址NETMASK:设置网络接口的子网掩码GATEWAY:设置网络接口的默认网关地址2)重启 network 网络服务
当修改了网络接口的配置文件以后,若要使新的配置生效,可以重启network服务或者重启主机或者禁用、启用网络接口。
示例:
• RHEL6中重启network服务:service network restartRHEL7中重启network服务:systemctl restart network注:这是我在做实验时候的一个经验:RHEL6修改完网卡配置重启后,ip地址仍然没有改过来,这时候我们经常会删除“/etc/udev/rules.d/70-persistent-net.rules”这个文件。RHEL7不用管,RHEL7特别好改,RHEL6改的时候特别难受。(个人提示,不求认同)
3)域名解析配置文件
a.指定为本机提供DNS解析的服务器地址
/etc/resolv.conf文件中记录了本机默认使用的DNS服务器的地址信息,对该文件所做的修改将会立刻生效。Linux系统中最多可以指定3个(第3个以后将被忽略)不同的DNS服务器地址,优先使用第1个DNS服务器。
示例:
其中“search localdomain”用来设置默认的搜索域(域名后缀)。例如,当访问主机“localhost”时,就相当于访问“localhost.localdomain”。
b.本地主机映射文件
/etc/hosts文件中记录着一份主机名与ip地址的映射关系表,一般用来保存经常访问的主机信息。当访问一个未知的域名时,先查找该文件中是否有相应的映射记录,如果找不到在去向DNS服务器查询。
hosts 文件和 DNS 服务器的比较
• 默认情况下,系统首先从 hosts 文件查找解析记录hosts 文件只对当前的主机有效hosts 文件可减少 DNS 查询过程,从而加快访问速度
Q3: linux上怎么配置redis的aof持久化
Redis 持久化和配置文件
Reids 持久化
Redis提供linux中永不超时命令了两种持久化linux中永不超时命令的方式linux中永不超时命令,分别是RDB(Redis DataBase)和AOF(Append Only File)。
RDBlinux中永不超时命令,简而言之,就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上。
AOF,则是换linux中永不超时命令了一个角度来实现持久化,那就是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。
其实RDB和AOF两种方式也可以同时使用,在这种情况下,如果redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高。
如果你没有数据持久化的需求,也完全可以关闭RDB和AOF方式,这样的话,redis将变成一个纯内存数据库,就像memcache一样。
redis配置文件
daemonize no # 默认情况下,redis并不是以daemon形式来运行的。通过daemonize配置项可以控制redis的运行形式
pidfile /path/to/redis.pid #当以daemon形式运行时,redis会生成一个pid文件,默认会生成在/var/run/redis.pid
bind 192.168.1.2 10.8.4.2 # 指定绑定的ip,可以有多个
port 6379 #指定监听端口
unixsocket /tmp/redis.sock #也可以监听socket
unixsocketperm 755 #当监听socket时可以指定权限为755
timeout 0 #当一个redis-client一直没有请求发向server端,那么server端有权主动关闭这个连接,可以通过timeout来设置“空闲超时时限”,0表示永不关闭。
Redis通用配置
tcp-keepalive0 #TCP连接保活策略,可以通过tcp-keepalive配置项来进行设置,单位为秒,假如设置为60秒,则server端会每60秒向连接空闲的客户端发起一次ACK请求,以检查客户端是否已经挂掉,对于无响应的客户端则会关闭其连接。如果设置为0,则不会进行保活检测。
loglevelnotice #日志级别,有四种debug, verbose, notice, warning
logfile“” #定义日志路径,
syslog-identredis #如果希望日志打印到syslog中,通过syslog-enabled来控制。另外,syslog-ident还可以让你指定syslog里的日志标志。
syslog-facility local0 #指定syslog的设备,可以是USER或者local0-local7
databases 16 #设置数据库的总数量
Redis快照配置(rdb持久化)
save 900 1 #表示每15分钟且至少有1个key改变,就触发一次持久化
save 300 10 #表示每5分钟且至少有10个key改变,就触发一次持久化
save 60 10000 #表示每60秒至少有10000个key改变,就触发一次持久
save “” #这样可以禁用rdb持久化
stop-writes-on-bgsave-error yes #rdb持久化写入磁盘避免不了会出现失败的情况,默认一旦出现失败,redis会马上停止写操作。如果你觉得无所谓,那就可以使用该选项关闭这个功能。
rdbcompressionyes #是否要压缩
rdbchecksumyes #是否进行数据校验
dbfilenamedump.rdb #定义快照文件的名字
dir ./ #定义快照文件储存路劲
Redis安全相关配置
requirepassaminglinux
#设置redis-server的密码
rename-command CONFIG aminglinux.config
#将CONFIG命令更名为aminglinux.config,这样可以避免误操作,但如果使用了AOF持久化,建议不要启用该功能
rename-command CONFIG “”
#也可以后面定义为空,这样就禁掉了该CONFIG命令
Redis限制相关配置
maxclients10000 #限制最大客户端连接数
maxmemorybytes #设定最大内存使用数,单位是byte
maxmemory-policy volatile-lru#指定内存移除规则
maxmemory-samples 3 #LRU算法和最小TTL算法都并非是精确的算法,而是估算值。所以你可以设置样本的大小。假如redis默认会检查三个key并选择其中LRU的那个,那么你可以改变这个key样本的数量。
Redis AOF持久化相关配置
appendonlyno #如果是no,则开启aof持久化
appendfilename“appendonly.aof” #指定aof文件名字
appendfsynceverysec#指定fsync()调用模式,有三种no(不调用fsync),always(每次写都会调用fsync),everysec(每秒钟调用一次fsync)。第一种最快,第二种数据最安全,但性能会差一些,第三种为这种方案,默认为第三种。
no-appendfsync-on-rewrite no #使用no,可以避免当写入量非常大时的磁盘io阻塞
auto-aof-rewrite-percentage 10 #规定什么情况下会触发aof重写。该值为一个比例,10表示当aof文件增幅达到10%时则会触发重写机制。
auto-aof-rewrite-min-size 64mb #重写会有一个条件,就是不能低于64Mb
Redis 慢日志相关配置
针对慢日志,你可以设置两个参数,一个是执行时长,单位是微秒,另一个是慢日志的长度。当一个新的命令被写入日志时,最老的一条会从命令日志队列中被移除。
Q4: Linux expect
expectlinux中永不超时命令:expect是Unix系统中用来进行自动化控制和测试的脚本工具linux中永不超时命令,常用于实现交互式任务的自动化。使用命令”dnf install expect -y”进行安装。脚本文件声明为”#!/usr/bin/expect”。
expect常用命令如下:
1.spawn+交互命令(如spawn ssh root@192.168.1.1):”spawn”是expect的初始命令linux中永不超时命令,用于启动一个新的交互进程,之后所有的操作都会在这个进程中进行。
2.set:定义变量/为变量赋值。使用语法:set 变量名 值。
3.puts:将变量值/字符串定向到本地标准输出文件(即定位到屏幕)。使用语法:puts “字符串/$变量名”
4.send_user:作用和使用方法类似于”puts”,区别在于”puts”会在输出内容的结尾自动追加一个换行符,而”send_user”不会。
5.send:向交互进程发送信息/命令(字符串和一些特殊符号,\r—回车,\n—换行,\t—制表符)。使用语法:send “信息/命令[\r]”。
6.[lindex $argv 数字]:表示外部传递参数的值,数字是n,就表示第n-1个参数。注:$argc表示外部传递参数的个数,也是一个值。
7.expect+字符串+{ 命令 }:将字符串与交换进程接收到的信息进行匹配。如果匹配成功(字符串是交换进程接收到的信息的一部分),执行包含在”{}”中的命令linux中永不超时命令;如果匹配失败,不执行包含在”{}”中的命令。该命令有三种使用方法:
第一种:单分支模式
①expect 字符串 { 命令 }
解释:如果字符串与交换进程接收到的信息匹配成功,执行包含在”{}”中的命令,并结束该expect命令;如果字符串与交换进程接收到的信息匹配失败,timeout秒后结束该expect命令。(注:脚本执行到expect命令时,计时器就开始计时,并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配。)
②expect {
字符串{ 命令 }
timeout { 命令 }
}
解释:如果字符串与交换进程接收到的信息匹配成功,执行包含在”{}”中的命令,并结束该expect命令;如果字符串与交换进程接收到的信息匹配失败,timeout秒后执行包含在”{}”中的命令,之后结束该expect命令。(注:脚本执行到expect命令时,计时器就开始计时,并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配。)
第二种:多分支模式
①expect {
字符串1 { 命令 }
字符串2 { 命令 }
}
解释:如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并结束该expect命令;如果字符串1与交换进程接收到的信息匹配失败、字符串2与交换进程接收到的信息匹配成功,执行包含在”{}”中的命令,并结束该expect命令;如果字符串1、字符串2皆与交换进程接收到的信息匹配失败,timeout秒后结束该expect命令。(注:脚本执行到expect命令时,计时器就开始计时,并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配。)
②expect {
字符串1 { 命令 }
字符串2 { 命令 }
timeout { 命令 }
}
解释:如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并结束该expect命令;如果字符串1与交换进程接收到的信息匹配失败、字符串2与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并结束该expect命令;如果字符串1、字符串2皆与交换进程接收到的信息匹配失败,timeout秒后执行包含在”{}”中的命令,之后结束该expect命令。(注:脚本执行到expect命令时,计时器就开始计时,并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配。)
第三种:循环多分支模式(注:exp_continue命令只能出现在expect命令的匹配语句中,执行到exp_continue命令时,脚本会跳出当前expect命令,并重新执行该expect命令,直到expect命令通过不包含exp_continue命令的匹配语句结束、或expect命令匹配超时结束。)
①expect {
字符串1 { 命令; exp_continue }
字符串2 { 命令 }
}
解释:如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并重新执行该expect命令;如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并重新执行该expect命令...;如果字符串1与交换进程接收到的信息匹配失败、字符串2与交换进程接收到的信息匹配成功,执行包含在”{}”中的命令,并结束该expect命令;如果字符串1、字符串2皆与交换进程接收到的信息匹配失败,timeout秒后结束该expect命令。(注:脚本执行到expect命令时,计时器就开始计时,并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配。)
②expect {
字符串1 { 命令; exp_continue }
字符串2 { 命令 }
timeout { 命令 }
}
解释:如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并重新执行该expect命令;如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并重新执行该expect命令...;如果字符串1与交换进程接收到的信息匹配失败、字符串2与交换进程接收到的信息匹配成功,执行包含在”{}”中的命令,并结束该expect命令;如果字符串1、字符串2皆与交换进程接收到的信息匹配失败,timeout秒后执行包含在”{}”中的命令,之后结束该expect命令。(注:脚本执行到expect命令时,计时器就开始计时,并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配。)
8.timeout:timeout是expect中的一个关键字变量,用于控制expect命令的超时时间。需要注意的是,这个超时时间针对于整个expect命令,而不是针对于expect命令中的某条匹配语句。也就是说,只有expect命令中所有匹配语句都匹配失败后,才会开始计算超时时间。timeout变量值缺省为10(秒),我们可以通过”set timeout=值”的方式为其重新赋值,作用范围:本次赋值到下一次赋值间的所有expect命令。注:如果需要为timeout变量重新赋值,应在expect命令之外进行。
9.expect eof:该命令的作用是结束spawn交互进程,将命令行切回至运行脚本的主机(即从远端服务器登出)。
10.interact:缺省情况下,expect脚本执行完毕后会自动从远端服务器登出(即便没有显式地执行”expect eof”命令)。使用interact命令后,expect脚本执行完毕会继续保持当前状态,并将控制权移交给用户。
11.exit:结束该脚本。
expect中的if语句:
if { 条件表达式 } {
命令
}
if { 条件表达式 } {
命令
} else {
命令
}
expect中的while语句:
while { 条件表达式 } {
命令
}
expect中的for语句:
for { set i 1 } { $i =10 } { incr i } {
命令
}
incr变量名 步长 ——变量自增
incr 变量名 -步长 ——变量自减
数学运算需使用let、expr等工具
linux中永不超时命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux保持不掉线命令、linux中永不超时命令的信息别忘了在本站进行查找喔。






