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

如何Bash脚本本身中获得其所在目录

问: 如何Bash脚本本身中获得其所在目录? 我想使用Bash脚本作为另一个应用程序启动器。我想把工作目录改为Bash脚本所在目录,以便我可以对该目录下文件进行操作,像这样: $ ....但是在以相对路径方式去执行脚本时,获取目录信息是相对路径,不能满足其他需要获取绝对路径场景。 如果要获取绝对路径,可以使用如下方法: #!...$script_dir 其中第3行代码,无论从何处调用它,都将为你提供脚本完整目录路径。...测试结果如下: 另外,可以根据第一种方法结合使用 realpath 命令,也可获取脚本所在目录绝对路径: #!.../(点-斜杠),以便在bash中运行它 shell脚本对编码和行尾符敏感吗

21620

Linux之expect工具免交互式shell脚本执行

-f文件读取命令,仅用于使用#!时。如果文件名为"-",则从stdin读取(使用"./-"文件名为-文件读取)。...-i交互式输入命令,使用"exit"或"EOF"退出输入状态--标示选项结束(如果你需要传递与expect选项相似的参数给脚本时),可放到#!行:#!...如果设置为-1表示不会超时set定义变量$argvexpect脚本可以接受bash外部传参,可以使用[ lindex $argv n ]n为0表示第一个传参,为1表示第二个传参,以此类推expect交互程序进程中指定接收信息...结尾处加上\r表示如果出现异常等待状态可以进行核查exp_continue表示循环式匹配,通常匹配之后都会退出语句,但如果有exp_continue则可以不断循环匹配,输入多条命令,简化写法。...exit退出expect脚本expect eofspawn进程结束后会向expect发送eof,接收到eof代表该进程结束interact执行完代码后保持交互状态,将控制权交给用户。

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

SAR 报告中获取平均 CPU 利用率 Bash 脚本

大多数 Linux 管理员使用 SAR 报告监控系统性能,因为它会收集一周性能数据。但是,你可以通过更改 /etc/sysconfig/sysstat 文件轻松地将其延长到四周。...在本文中,我们添加了三个 bash 脚本,它们可以帮助你在一个地方轻松查看每个数据文件平均值。 这些脚本简单明了。出于测试目的,我们仅包括两个性能指标,即 CPU 和内存。...你可以修改脚本其他性能指标以满足你需求。 SAR 报告中获取平均 CPU 利用率 Bash 脚本bash 脚本每个数据文件中收集 CPU 平均值并将其显示在一个页面上。...done echo "+----------------------------------------------------------------------------------+" 运行脚本后...2: SAR 报告中获取平均内存利用率 Bash 脚本

1.6K10

Shell流程控制

while 循环经常会和 read 命令一起使用,read 是 Bash 内置命令,可用来读取文件,通常会按行读取:每次读一行。...read 命令标准输入中读取,也就是管道中读取数据,每次读取一行,因为管道中最初没有数据,所以 read 命令被阻塞处于数据等待状态。...当 cat 命令读完文件所有数据后,将数据放入到管道中,于是 read 命令管道中每次读取一行并将所读行赋值给变量 line,然后执行循环体,然后继续循环,直到 read 读完所有数据,循环退出。...如果是直接文件读取,可使用输入重定向,如果是读取命令产生数据,可使用进程替换。...其中数值n表示退出状态码。 break [n] 退出整个循环,包括for、while、until和select语句。其中数值n表示退出循环层次。

88300

Tomcat进程意外退出,元凶居然是他...

有了这个线索之后,银时同学立刻看了一下对方测试环境脚本,简化后如下: $ cat test.sh #!/bin/bash cd /data/server/tomcat/bin/ ....这种情况下,如果用户直接关闭ssh终端窗口(用鼠标或快捷键),则java进程也会退出。而如果先ctrl-c终止test.sh进程,然后再关闭ssh终端的话,则java进程不会退出。...我们推测是ssh窗口在关闭时,对当前交互shell以及正在运行test.sh等子进程发送某个退出Signal,找了一台装有systemtap机器来验证,所用stap脚本涧泉同学那里copy...确定了是由signal引起之后,我疑惑变成了: 1) 为什么SIGINT (kill -2) 不会让tomcat进程退出?.../bin/sh sleep 4400 & echo "shell exit" 运行a.sh脚本之后,sleep 4400进程pid与pgid是不同,pgid是其父进程id,即已经退出a.sh

3.8K10

Tomcat 进程意外突崩,元凶居然是它...

有了这个线索之后,银时同学立刻看了一下对方测试环境脚本,简化后如下: $ cat test.sh #!/bin/bash cd /data/server/tomcat/bin/ ....这种情况下,如果用户直接关闭ssh终端窗口(用鼠标或快捷键),则java进程也会退出。而如果先ctrl-c终止test.sh进程,然后再关闭ssh终端的话,则java进程不会退出。...我们推测是ssh窗口在关闭时,对当前交互shell以及正在运行test.sh等子进程发送某个退出Signal,找了一台装有systemtap机器来验证,所用stap脚本涧泉同学那里copy...确定了是由signal引起之后,我疑惑变成了: 1) 为什么SIGINT (kill -2) 不会让tomcat进程退出?.../bin/sh sleep 4400 & echo "shell exit" 运行a.sh脚本之后,sleep 4400进程pid与pgid是不同,pgid是其父进程id,即已经退出a.sh

89710

100 个 Linux Shell 脚本经典案例解析

/bin/bash# 编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机# 状态(多进程版)#定义一个函数,ping 某一台主机,并检测主机存活状态myping.../bin/bash# 查看有多少远程 IP 在连接本机(不管是通过 ssh 还是 web 还是 ftp 都统计) # 使用 netstat ‐atn 可以查看本机所有连接状态,‐a 查看所有,# -.../bin/bash# 非交互自动生成 SSH 密钥文件 # ‐t 指定 SSH 密钥算法为 RSA 算法;‐N 设置密钥密码为空;‐f 指定生成密钥文件>存放在哪里rm  -rf  ~/.ssh/.../bin/bash键盘读取一个论坛积分,判断论坛用户等级#等级分类如下:#  大于等于 90        神功绝世#  大于等于 80,小于 90       登峰造极#  大于等于 70,小于.../bin/bash读取用户输入账户名称,将账户名写入到数组保存 # 定义数组名称为 name,数组下标为 i,小标 0 开始,每输入一个账户名,下标加 1,继续存下一个账户# 最后,输入 over

3K50

Shell编程100例,超赞!

read -p "请输入用户名: " user #使用‐z 可以判断一个变量是否为空,如果为空,提示用户必须输入账户名,并退出脚本,退出码为 2 #没有输入用户名脚本退出后,使用$?.../bin/bash # 编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机 # 状态(多进程版) #定义一个函数,ping 某一台主机,并检测主机存活状态.../bin/bash # 查看有多少远程 IP 在连接本机(不管是通过 ssh 还是 web 还是 ftp 都统计) # 使用 netstat ‐atn 可以查看本机所有连接状态,‐a 查看所有.../bin/bash # 键盘读取一个论坛积分,判断论坛用户等级 #等级分类如下: # 大于等于 90 神功绝世 # 大于等于 80,小于 90 登峰造极 # 大于等于.../bin/bash # 读取用户输入账户名称,将账户名写入到数组保存 # 定义数组名称为 name,数组下标为 i,小标 0 开始,每输入一个账户名,下标加 1,继续存下一个账户 # 最后

3.2K11

Linux命令(30)——scp命令

]:指定文件中读取传输时使用密钥文件,此参数直接传递给ssh; -l [limit]:指定宽带限制; -o [ssh_option]:指定使用ssh选项,可以使用ssh_config中使用ssh...注意事项: (1)scp返回0成功,>0失败; (2)使用scp在不同主机之间进行文件传输,需要确保两台设备都开启了ssh远程登录服务,且两台设备能互相通信; (3)使用scp命令要确保使用用户具有可读取远程服务器相应文件权限.../usr/bin/expect 指明该脚本由expect来解析。这里expect其实和linux下bash、Windows下cmd.exe是一类东西,都是可执行程序,也可用于脚本解析器。...expect主要作用是解析自动交互脚本,比如实现ssh自动登录,无需手动输入密码等。...如果是使用ssh登录其它主机的话,需要保持在交互状态,那么此时需要interact,如果没有这一句登录完成后会立刻退出,而不是留在远程终端上。

3.5K20

profile与bashrc分析

bash shell被打开时,该文件被读取. ~/.bash_profile : 每个用户都可使用该文件输入专用于自己使用shell信息,当用户登录时,该文件仅仅执行一次!...~/.bashrc : 该文件包含专用于你bash shellbash信息,当登录时以及每次打开新shell时,该该文件被读取. ~/.bash_logout : 当每次退出系统(退出bash shell...: 1-21行基本是打开动态链接库文件和身份验证文件....如果选中输入行,以 0 状态退出 #这里由 | (竖线)或者换行符隔开多个正则表达式会匹配与任何一个正则表达式所匹配字符串 #一个正则表达式可以被包括在“()”(括弧)中进行分组 pathmunge...或exit退出表现.如果直接关闭掉terminal,则不会执行.bash_logout和写回.bash_history文件 .bash_logout脚本默认是调用clear清一下屏幕 http://blog.csdn.net

2.3K20

java检测tomcat宕机_Tomcat意外宕机分析

tomcat启动之后,当前shell进程并没有退出,而是挂住在tail进程,往终端输出日志内容。这种情况下: 1)、如果我先直接关掉ssh窗口后,Java进程会退出,服务不可用。...ssh终端窗口会导致java进程退出?...II)而非交互模式下,通常是不需要作业控制,所以作业控制在非交互模式下默认也是关闭(当然也可以在脚本里通过选项set -m打开作业控制选项)。...不开启作业控制的话,脚本后台进程可以通过设置忽略SIGINT信号来避免父进程对组中成员传播,因为对它来说这个信号已经没有意义。...因为java后台进程从父进程catalina.sh(又是其父进程test.sh)继承pgid,所以java进程仍属于test.sh进程组里成员,收到SIGHUP后退出

1.4K10

第三十章 : 流程控制:whileuntil 循环

比方说我们想要按照顺序1到5显示五个数字。可如下构造一个 bash 脚本: #!...和 if 一样, while 计算一系列命令退出状态。只要退出状态为零,它就执行循环内命令。在上面的脚本中,创建了变量 count ,并初始化为1。...while 命令将会计算 test 命令退出状态。只要 test 命令返回退出状态零,循环内所有命令就会执行。每次循环结束之后,会重复执行 test 命令。...第六次循环之后, count 数值增加到6, test 命令不再返回退出状态零,且循环终止。程序继续执行循环之后语句。...循环将使用 read 从重定向文件中读取字段。这个 read 命令读取每个文本行之后,将会退出,其退出状态为零,直到到达文件末尾。到时候,它退出状态为非零数值,因此终止循环。

34110
领券