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

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

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

34920

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.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    从 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表示退出的循环层次。

    92100

    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

    1.1K10

    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

    4.1K10

    运维脚本:实时监测登录日志

    引言 背景介绍:在服务器的运维管理中,及时监控系统的登录日志对保障系统的安全至关重要。通过实时监控登录日志,运维人员可以发现潜在的异常登录行为,防止系统被非法访问。...技术选型:通过编写 Bash 脚本,结合inotify、awk、grep 等工具,来实现对日志文件的实时监控与分析。...脚本实现原理 实时监控:利用 inotify 命令动态监控日志文件的变动,并结合 sed 命令实时提取和输出新增的登录日志。 日志筛选:通过 grep 等工具过滤出登录失败、异常登录等相关信息。...报警机制:脚本可以配置成在监控到异常行为时,自动发送通知邮件 脚本示例 #!.../bin/bash # 作者: 阿杰 # 用途: 实时检测登录日志,统计异常登录 # 脚本名称: watch_secure.sh # 用法: bash watch_seacure.sh # 日志记录

    16031

    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

    3.5K50

    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.5K11

    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.7K20

    profile与bashrc分析

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

    2.4K20

    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
    领券