首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JAVA001-java  调用bash shell脚本阻塞问题解决

背景 使用java实现web端,web端相应用户界面操作,使用java调用bash实现shell脚本进行实际操作,操作完成返回执行结果给web 界面显示。 现象: Java 进程阻塞。...使用ps命令可以看到被调用shell 执行进程状态为S !...Java程序在调用Runtime.getRuntime().exec(jyName)之后,linux 会创建一个进程用于执行这个程序,该进程与jvm之间使用三个管道进行链接 标准输入、标准输出、标准出错...我们java 程序也就阻塞在了 process.waitFor(); 解决办法 所调用程序中不要有太多输出到标准出错 、标准输出中。...Jvm及我们java程序中,对该子进程标准输出、标准出错进行读取,从而避免缓存区满。

1.3K20

如何利用Bash脚本监控Linux内存使用情况

方法-1:用 Linux Bash 脚本监视内存利用率并发送电子邮件 如果只想在系统达到给定阈值时通过邮件获取当前内存利用率百分比,请使用以下脚本。 这是个非常简单直接单行脚本。...此外,你可以根据你要求更改内存利用率阈值。 输出:你将收到类似下面的电子邮件提醒。 High Memory Alert: 80.40% 我们过去添加了许多有用 shell 脚本。...* 如何使用 shell 脚本自动执行日常活动? 方法-2:用 Linux Bash 脚本监视内存利用率并发送电子邮件 如果要在邮件警报中获取有关内存利用率更多信息。...使用以下脚本,其中包括基于 top 命令和 ps 命令最高内存利用率和进程详细信息。 这将立即让你了解系统运行情况。 当你系统达到内存利用率 “80%” 时,它将触发一封电子邮件。...比如说,如果你系统达到 8.25 给定限制,那么你将在 5 分钟内收到电子邮件警报。希望现在说清楚了。 输出:你将收到类似下面的电子邮件提醒。

2.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

expect用法介绍

一、概念 Expect是UNIX系统中用来实现自动化控制和测试软件工具,作为Tcl脚本语言一个扩展应用在交互式软件中,如Telnet、FTP、SSH等。...执行shell脚本,需要从终端得到输入时(如ssh root@192.168.1.2),Expect可以根据提示,模拟标准输入来实现交互脚本执行 可以把shell和expect理解为两种不同脚本语言,...expect有独自语法、变量 二、ssh远程主机方式 2.1.简单方式,直接使用expect命令 #!...\r相当于在终端敲了下回车 { send "hostname\r"} #向远程主机发送hostname指令 { send "exit\r"} #最后一个expect不会执行,因此不会发送...exit指令,这里用来标识该expect要退出了 2.2.稍复杂方式,shell脚本调用expect脚本,并传入参数(推荐) shell脚本 #!

2.9K31

shell实现SSH自动登陆

/bash等,我们可以使用ls -l /bin/*sh命令来查看当前可用脚本解释器; 使用. ..../file_name或source命令执行脚本 这种方式不会像前两种方式一样fork一个子进程去执行脚本,而是使用当前shell环境执行,用于 .bashrc或者.bash_profile被修改时候,.../binbash,它就是脚本shebang,至于为什么叫这么个奇怪名字,C语言和Unix开发者丹尼斯·里奇称它为可能是类似于"hash-bang"英国风描述性文字; 贴一段wiki上解释: 在计算机科学中...字符串里使用 * 等通配符; string与命令行返回信息匹配后,expect会立刻向下执行脚本; set timeout命令: set timeout n命令将expect命令等待超时时间设置为n...只能在脚本目录中才能执行,不然使用绝对路径输出命令更长。

3.5K102

python使用pexpect实现ftp操作

启动ftp程序 ftp.expect('Name') #expect方法等待子程序产生输出,判断是否匹配定义字符串Name ftp.sendline('anonymous') #匹配后发送用户名字符串进行回应...spawn()中可以是系统中命令,但是不会解析shell命令中元字符,包括重定向“>”,管道符“|”或者通配符“*”,但是我们可以将含有这三个特殊元字符命令作为/bin/bash参数进行调用,例如...(‘/bin/bash’,[‘-c’,command]) she.expect(pexpect.EOF) (1)expect方法:expect定义了子程序输出匹配规则。...如上边脚本中ftp.expect('Name'),返回值为0 列表情况如下图,返回值为2 (2)read方法:向子程序发送响应命令,可以理解为代替了我们键盘输入。...pexpect进行封装调用外部命令函数,类似于os.system()或os.popen()方法,不同是,使用run可以同时获得命令输出结果及其命令退出状态。

2.2K60

expect命令在linux下实现批量ssh免密

有时候我们需要批量发送ssh命令给服务器,但是有可能有些服务器是新加入,还没有配置ssh免密,这个时候就会提示我们输入yes/no 或者password等,expect脚本命令就是用于在提示这些时候.../usr/bin/expect而不是普通bash脚本那样 spawn就是用来启动新进程 expect “password” ,注意这个是expect脚本里面内部命令,代表用来等待进程反馈,可以接受字符串和正则表达式...,这段意思就是将spawn启动进程输出当作expect命令输入,如果包含password脚本,就会向着标准输出 输出123456\r ,注意\r代表换行,跟我们输入完一个命令换行是一个道理。...,如果匹配不是,那么就要自己输入了,但是我们有可能在第一次有不同提示,这个时候就需要使用多分支语法 expect 只要匹配到aaa 或者password其中一种就会输出。..."} } expect "]#" {send "ls -la\r"} interact expect命令行参数 上面的expect脚本功能可能都达到了,为了避免有很多expect脚本,我更推荐使用expect

2.2K21

shell expect权威指南和实战

但是对于需要交互场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如telnet服务器等进行交互功能。而expect使用来实现这种功能工具。...最后send命令将response变量值加上回车符发送给标准输出。 注意: (1)该脚本没有使用spawn命令。 (2)该expect脚本会与任何调用脚本进程交互。.../usr/bin/expect] 这一行告诉操作系统脚本代码使用那一个shell来执行。这里expect其实和linux下bash、windows下cmd是一类东西。...,在其中调用另外一个expect脚本(scp_key_to_node.exp),两个脚本放在同一个目录下: (1)bash脚本:send_key.sh #!...代码结尾expect eof与spawn对应,表示捕获终端输出信息终止。 如果需要实现批量scp任务,则需要再写一个shell脚本调用这个expect脚本。 #!

1.6K21

Here Documents 结合expect使用--(2)

通过重定向当然是不可能了,因为spawn产生是一个由expect来维护一个子进程,当这个sub-process结束时候,已经没有办法再进入了,就算重定向成功,也是无法拿到结果,况且重定向是否成功...; 要使用expect_out, 我们必须首先理解expect_out....当expect执行匹配验证时候,它是 把sub-process输出作为 被查找对象,而用户提供“匹配关键字或者正则表达式” 作为“查找对象”,那么被查找对象总是sub-process从头开始所有输出吗...如果没有匹配到,$expect_out(buffer)结果是不会更新; 这一段理解起来有一点拗口,不过对使用 expect_out非常重要,我们通过下面的例子进行验证: [root@instance...log文件exp_log中可以看到: 第一次调用expect匹配到第2行assword,匹配字符串之后字符是冒号; 第二次调用expect,是从第2行冒号开始进行匹配,一直到第4行,发现了匹配字符串

82610

玩转企业常见应用与服务系列(十):自动应答工具 expect 原理与实践

# 下面的一个程序段是从一个有关登录脚本里面摘取 # abort是在脚本别处定义过程,而其他action使用类似与C语言Tcl原语 expect "*welcome*" break "*...expect 或者 interact 开始所有输出(所以统配符*****使用非常普遍)。...这个 passwd 检查脚本被设计成由别的脚本来驱动。这第二个脚本从一个文件里面读取参数和预期结果。对于每一个输入参数集,它调用第一个脚本并且把结果和预期结果相比较。...(因为这个任务是非交互,一个普通老式 shell 就可以用来解释第二个脚本)。比如说,一个 passwd 数据文件很有可能就象下面一样。...*" {send "$password\r"} interact 在 shell 脚本使用 expect # [1] 直接添加expect脚本文件 #!

15710

Here Documents 结合expect使用--(1)

起始部分<<符号后面,可以追加符号'-', 这样 here documents 每一行前面的tab 会被忽略,但是空格并不会被忽略;, 这样使用目的是为了确保在shell脚本中,here documents...内容看起来更美观; 如果把起始部分delimiter 加上 单引号 引用起来,那么在here documents 部分内容中,变量不会被解析;这种情况也是使用比较多,比如通过cat命令来生成另一个脚本...$1, 以及脚本其他变量等 使用expect 命令来解决自动交互问题是非常广泛expect有自己独特语法,可以写expect脚本来解决复杂交互问题;但是很多时候,我们会需要在shell中通过调用...expect脚本来解决交互问题;这时候就需要Here Documents 来帮忙; 在expect使用时候,需要注意如下几点: expect ... send ......也正是这个原因,所以expect一般在最后都会使用如下结构: expect eof 看如下例子: [root@localhost ~]# cat 1.sh #!

38220

Linux之expect交互语言命令

****前言**** 记得在去年在蝴蝶脚本已经看到过expect,只不过没有去留意它是什么,是干什么,然而今天去了解了,并利用它来写自动化交互脚本。...---- ****expect安装**** $sudo apt-get install expect ---- ****简单使用**** #!...interact send:用于向进程发送字符串 expect: 期望从进程接收到字符串,后面也可以跟正则表达式 spawn:启动进程 set timeout -1 :脚本运行超时(秒) -1不会超时...---- ****与bash共用**** 从上面可以看出第一行已经指定了脚本解析器,但是很多时候或场景我们只希望expect作为shell脚本一个小小调用部分,然而使可以,这也是最常用。.../bin/bash echo "this bash func" #---------expect开始---------- set password fenglican set timeout -1

1.9K50

Shell脚本编程_shell简单脚本

① 交互式环境调用函数 ② 在脚本中定义及使用函数 ③ 使用函数文件 (4) 函数返回值 (5) 环境函数 (6) 函数参数 (7) 函数变量 (8) 函数递归 2.12 一些脚本相关工具 (1) 信号捕捉...例如: #将标准输出和错误输出重定向到 /dev/null,运行这个脚本不会输出任何信息到终端 run.sh 1>/dev/null 2>&1 (6) “零” 设备 – /dev/zero “零”...月 8 17:47 1.sh ② 在脚本中定义及使用函数 函数在使用前必须定义,因此应将函数定义放在脚本开始部分,直至 shell 首次发现它后才能使用调用函数仅使用其函数名即可。...可以将经常使用函数存入一个单独函数文件,然后将函数文件载入 shell,再进行调用函数 文件名可任意选取,但最好与相关任务有某种联系,例如:functions 一旦函数文件载入 shell,就可以在命令行或脚本调用函数...: 使用 echo 等命令进行输出 函数体中调用命令输出结果 函数退出状态码: 默认取决于函数中执行最后一条命令退出状态码 自定义退出状态码,其格式为: return 从函数中返回,用最后状态命令决定返回值

7.8K10

Linux 下自动应答工具 Expect 使用指南

# 下面的一个程序段是从一个有关登录脚本里面摘取 # abort是在脚本别处定义过程,而其他action使用类似与C语言Tcl原语 expect "*welcome*" break "*...expect 或者 interact 开始所有输出(所以统配符*****使用非常普遍)。...这个 passwd 检查脚本被设计成由别的脚本来驱动。这第二个脚本从一个文件里面读取参数和预期结果。对于每一个输入参数集,它调用第一个脚本并且把结果和预期结果相比较。...(因为这个任务是非交互,一个普通老式 shell 就可以用来解释第二个脚本)。比如说,一个 passwd 数据文件很有可能就象下面一样。...*" {send "$password\r"} interact [4] 在 shell 脚本使用 expect # [1] 直接添加expect脚本文件 #!

1.6K21

shell脚本快速入门之-----深入介绍Expect免交互

免交互:自动化处理前提条件 一、Expect概述 Expect是建立在tc|基础.上一个工具,Expect 是用来进行自动化控制和测试工具。主要解决shelI脚本中不可交互问题。...对于大规模linux运维很有帮助 在linux运维和开发中,我们经常需要远程登录服务器进行操作,登录过程是一个交互过程,可能会需要输入yes/no,password等信息。...为了模拟这种输入,可以使用Expect脚本 Expect安装 挂载光盘 制作本地YUM源 执行安装命令 yum -y install expect 二、基本命令 1、格式 set...yes 自动发送指令 send:向进程发送字符串,用于模拟用户输入 不能自动回车换行,一般要加\r(回车) expect expect一个内部命令,判断上次输出结果里是否包含指定字符串...Expect脚本可以接受从bash传递参数,可以使用 [lindex argv n] 获得,n从0开始,分别表示第一个1,第二个2,第三个3……参数 argvn没有空格则表示脚本名称 ; argv

2K31

如何以非交互方式将参数传递给交互式脚本

问: 我有一个 Bash 脚本,它使用 read 命令以交互方式读取命令参数,例如 yes/no 选项。是否有一种方法可以在非交互式脚本调用这个脚本,并将默认选项值作为参数传递?...使用 Here Documents Here Documents 可以用来传递多行输入到脚本bash your-interactive-script.sh <<EOF arg1 arg2 arg3...最后使用命令 exec 3<&- 关闭这个文件描述符,这样可以防止资源泄露,并确保这个文件描述符可以在脚本或程序后续部分重新使用。 测试截图: 4....使用 expect 工具 对于需要等待特定提示或需要更多控制复杂场景,可以使用 expect 工具: #!/usr/bin/expect -f spawn ....如果只是一系列简单输入,方法 1 和 2 是最简便。但是,如果脚本需要更复杂交互,expect 更合适。

8210

避免删库跑路最好办法

在实际操作中,这种情况可能会导致严重数据丢失和业务中断。 1.2 避免删除跑路方式 权限控制: 限制对生产环境直接访问和操作,确保只有受信任的人员才能执行敏感操作。...备份策略: 实施完善备份策略,定期备份数据,并将备份数据存储在安全地方,以便在出现问题时能够快速恢复数据。 多地备份: 将备份数据存储在不同地理位置,以防止因某一地点发生灾难而导致数据丢失。...Linux 系统自带定时任务功能,我们可以指定一个 cron 作业,在每天凌晨 2 点 10 分运行该备份脚本,并将输出追加到 /home/passjava/backup/cron_log.txt 文件中...步骤如下: 编辑定时任务 crontab -uroot -e 添加定时任务 10 2 * * * bash /home/passjava/backup/你脚本 >> /home/passjava/...,可能导致严重经济损失和安全风险。

8510

批量管理自动化运维100台小规模服务器

二、脚本制作技术需求 2.1 SSH免密码登陆认证 服务器远程管理认证通常有两种方式认证, 第一种采用对称加密算法账号密码登录认证,对称加密即加密和解密使用同一个密钥,最常见算法有...实现key分发 在上百台服务器中,对公钥分发不可能经过上百次手工输入key,像前文所述在在自动化运维时代里超过3次动作必须用自动化思想实现自动化运维。...-o指定正确标准输出目录,如果-i显示过多,可以选择指定输出某个目录,并自动创建以IP命名文本用来保存输出。...第一步:编写Expect脚本,实现key上传 #!...eof 第二步:利用bash脚本调用Expect脚本批量给服务器上传(此时已实现免密码登录) #!

5.2K150

expect shell 脚本记录

send:向进程发送字符串,用于模拟用户输入, 该命令不能自动回车换行,一般要加\r(回车) expectexpect一个内部命令,判断上次输出结果里是否包含指定字符串,如果有则立即返回,否则就等待超时时间后返回...,只能捕捉由spawn启动进程输出expect spawn:启动进程,并跟踪后续交互信息 interact:执行完成后保存交互状态,把控制权交给控制台 set timeout 30:设置超时时间为30...send_user: 回显命令,相当于echo argv参数数组:Expect脚本可以接受从bash传递参数,可以使用 [lindex argv n] 获得,n从0开始,分别表示第一个1,第二个2,...由spawn启动命令在结束时会产生一个eof标记,expect eof 即在等待这个标记 # 1.4. bash shell内加入expect脚本 使用<<-EOF ,引入expect脚本。 #!...expect "]#" { send "cd /\r" } # 结束 expect eof 3). 使用脚本 .

79720
领券