【亚洲必赢366.net】Shell中获取脚本所在目录绝对

作者:计算机知识

问问: 作者想要知道运维中脚本子shell的经过id。小编该怎么在shell脚本中收获PID。

【亚洲必赢366.net】Shell中获取脚本所在目录绝对路径的方法,Shell脚本中获取进程ID的方法。要取得正在推行的次第/脚本自身所贮存的相对路线,在 PHP 里面能够用 dirname(realpath(__FILE__)) ; C# 则有 System.Windows.Forms.Application.StartupPath ; java 就如从未什么相比一向的法子,只好选取 CodeSource 来直接获取 。而在 linux shell 脚本里面如若想取稳妥前剧本文件寄存的相对路径,也平素不太现有的指令能够调用,但是能够通过下边包车型大巴语句来获取:

Shell中使用 pwd 命令能够获得当前工作目录,可是『当前工作目录』恐怕实际不是『脚本文件所在目录』。

shell获取进度ID的点子

当自个儿在实行shell脚本时,它会运营叁个叫子shell的经过。作为主shell的子进程,子shell将shell脚本中的命令作为批管理运转(由此称为“批管理进度”)。

复制代码 代码如下:

# /home/user/scripts/getmydir.sh
MYDIR=`pwd`
echo $MYDIR

# 在 /home/user/scripts目录下执行
$ ./getmydir.sh
/home/user/scripts

# 在 /home/user 目录下执行
$ ./scripts/getmydir.sh
/home/user

 

亚洲必赢366.net 1

baseDirForScriptSelf=$(cd "$(dirname "$0")"; pwd)
echo "full path to currently executed script is : ${baseDirForScriptSelf}"

能够看到,pwd 获取的『当前事业目录』大概实际不是『脚本文件所在目录』。因而大家能够用以下措施获得脚本文件所在目录的相对路线:

shell获取进度ID的法子:

在好几情形下,你恐怕想要知道运转中的子shell的PID。那么些PID信息方可在差异的事态下使用。举个例子,你能够应用shell脚本的PID在/tmp下开创三个独一的临时文件。有的时候侯脚本供给检查实验全体运营的进度,它能够从进程列表中排除自己的子shell。

就算超越58%动静下我们并没有必要那样的相对路线来成功职业;但一旦要把多个本子、数据文件等内容打包作为二个完整来交给别人使用,又愿意不论用户拷贝到哪个目录下施行脚本都能够正确的找到这么些包里面包车型大巴任何剧情的话,用那样的剧本来自动定位包的根目录应该是个相比鲁棒的做法。

MYDIR=`dirname $0`

 

在bash中,子shell进度的PID存款和储蓄在二个极其的变量‘$$'中。那几个变量只读,你无法在剧本中期维修改它。举个例子:

您大概感兴趣的文章:

  • Linux中shell脚本获取当前工作目录的主意
  • bash得到当前路径示例
  • linux 下取稳当前专门的学业路线的实例

参考

  • Bash脚本获得自己路线方法

ps -A |grep "cmdname"| awk '{print $1}'

复制代码 代码如下:

pidof "cmdname"

本文由bwin必赢发布,转载请注明来源

关键词: bwin中国 linux