草庐IT

bash-trap

全部标签

linux - 如何调试 bash 脚本并获取每个命令的执行时间

我有一个bash脚本,它需要将近5秒才能运行。我想调试它,并确定哪些命令花费的时间最长。这样做的最佳方法是什么?有我可以设置的标志吗?设置#!/bin/bash-vx并没有多大帮助。我想要的基本上是按行号的执行时间。 最佳答案 这与内置bash调试工具的答案尽可能接近,因为它提供了从脚本执行开始时间开始的总体计时信息。在脚本的顶部添加这个以进行第二次计数:exportPS4='+[${SECONDS}s][${BASH_SOURCE}:${LINENO}]:${FUNCNAME[0]:+${FUNCNAME[0]}():}';set

linux - 当 bash 脚本以 .运算符(operator)?

我想做的是将文件中的设置包含到我当前的交互式bashshell中,如下所示:$。/path/to/some/dir/.settings问题是.settings脚本也需要使用“.”运营商包括其他文件是这样的:..extra_settings如何在.settings文件中引用.extra_settings的相对路径?这两个文件始终存储在同一个目录中,但根据这些文件的安装位置,该目录的路径会有所不同。运算符(operator)总是知道/path/to/some/dir/如上所示。.settings文件如何知道它安装的目录?我宁愿没有记录安装目录名称的安装过程。 最

linux - 当 bash 脚本以 .运算符(operator)?

我想做的是将文件中的设置包含到我当前的交互式bashshell中,如下所示:$。/path/to/some/dir/.settings问题是.settings脚本也需要使用“.”运营商包括其他文件是这样的:..extra_settings如何在.settings文件中引用.extra_settings的相对路径?这两个文件始终存储在同一个目录中,但根据这些文件的安装位置,该目录的路径会有所不同。运算符(operator)总是知道/path/to/some/dir/如上所示。.settings文件如何知道它安装的目录?我宁愿没有记录安装目录名称的安装过程。 最

linux - Bash init - 在特定用户下启动服务

我正在尝试在bash(Ubuntu)中创建一个初始化脚本,以在特定用户下启动服务。除了这个还有更好的方法吗?su--c"bash-c'cd$DIR;'" 最佳答案 Ubuntu使用start-stop-daemon已经支持此功能。使用/etc/init.d中的框架文件:sudocp/etc/init.d/skeleton/etc/init.d/mynewservice适本地编辑mynewservice。将以下参数添加到调用start-stop-daemon的行中:--chuid用户名:group例子:改变start-stop-dae

linux - Bash init - 在特定用户下启动服务

我正在尝试在bash(Ubuntu)中创建一个初始化脚本,以在特定用户下启动服务。除了这个还有更好的方法吗?su--c"bash-c'cd$DIR;'" 最佳答案 Ubuntu使用start-stop-daemon已经支持此功能。使用/etc/init.d中的框架文件:sudocp/etc/init.d/skeleton/etc/init.d/mynewservice适本地编辑mynewservice。将以下参数添加到调用start-stop-daemon的行中:--chuid用户名:group例子:改变start-stop-dae

linux - 在 bash 中将人类可读的字节转换为字节

所以我试图在linux中分析非常大的日志文件,我已经看到了很多相反的解决方案,但是记录数据的程序不允许输出格式,因此它只能以人类可读的格式输出(我知道,多么痛苦)。所以问题是:如何使用awk之类的东西将人类可读的转换为字节:所以转换这个:9371.43K120.3M到:9371464126143693我负担得起并且我希望出现一些舍入误差。提前致谢。附言不必是awk,只要它可以提供在线转换即可。我找到了this但给出的awk命令似乎无法正常工作。它输出类似534K"0"的内容。我还找到了一个使用sed和bc的解决方案,但因为它使用bc,所以效果有限,这意味着它一次只能使用一列,并且所有数

linux - 在 bash 中将人类可读的字节转换为字节

所以我试图在linux中分析非常大的日志文件,我已经看到了很多相反的解决方案,但是记录数据的程序不允许输出格式,因此它只能以人类可读的格式输出(我知道,多么痛苦)。所以问题是:如何使用awk之类的东西将人类可读的转换为字节:所以转换这个:9371.43K120.3M到:9371464126143693我负担得起并且我希望出现一些舍入误差。提前致谢。附言不必是awk,只要它可以提供在线转换即可。我找到了this但给出的awk命令似乎无法正常工作。它输出类似534K"0"的内容。我还找到了一个使用sed和bc的解决方案,但因为它使用bc,所以效果有限,这意味着它一次只能使用一列,并且所有数

linux - 用于切换用户的 Bash 脚本

我有一个带有5个帐户的cent-OS服务器:developer、user1、user2、user3和user4。所有用户主目录都在/home下,如/home/developer、/home/user1、/home/user2、/home/user3和/home/user4。我想创建4个脚本:user1.sh、user2.sh、user3.sh和user4.sh>在/home/developer文件夹中。当用户developer运行脚本user1.sh时,他切换到user1并cd到主目录user1(/home/user1)的剩余脚本等等。背后的想法是让开发人员远离root访问权限,并允许

linux - 用于切换用户的 Bash 脚本

我有一个带有5个帐户的cent-OS服务器:developer、user1、user2、user3和user4。所有用户主目录都在/home下,如/home/developer、/home/user1、/home/user2、/home/user3和/home/user4。我想创建4个脚本:user1.sh、user2.sh、user3.sh和user4.sh>在/home/developer文件夹中。当用户developer运行脚本user1.sh时,他切换到user1并cd到主目录user1(/home/user1)的剩余脚本等等。背后的想法是让开发人员远离root访问权限,并允许

linux - 列出 bash "bind -x"绑定(bind)

我搜索了manbash,但找不到列出所有当前bind-x键绑定(bind)的内容。有什么办法可以做到吗?我尝试了以下方法:$bind-x'"\C-`":"echohello"'#testbinding:pressCTRL+`hello#Bindingworks!$bind-p|grep'hello'#nooutput$bind-S#nooutput那么,有什么方法可以让我看到所有当前事件的bind-x的列表? 最佳答案 似乎您可以使用bind-X(Bash4.3中的新功能):$helpbind...-xkeyseq:shell-co