如何validation一个bash提供的configuration脚本实际上运行?

我正在使用数字海洋API创build几滴(他们的服务器名称)。

这些水滴可以采取用户元数据,这基本上是一个带有shell命令的文件,我想要在创build时configuration服务器。

这里给出一个例子:

https://www.digitalocean.com/community/tutorials/an-introduction-to-droplet-metadata

为了生硬,我只需要检查bash脚本是否成功运行。 我知道一些麻烦的方法,我可能会检查这一点,但我希望有更容易的事情。

我想最容易的是查看机器上运行的命令的历史或类似的东西。 从shell脚本运行的命令可能吗?

我知道history命令,但只适用于ssh'ed进入机器时input的命令。 这实际上并不显示我的bash脚本中的命令。

希望有人知道查看机器上运行的所有命令的快速而简单的方法。

干杯。

你的脚本应该做些什么。 只要检查是否真的发生。

如果这是不可能的,只需添加类似的东西

 touch /tmp/mycheckfile 

到脚本的末尾,然后检查该文件是否存在。 简单,方便,快捷。

请注意,这不是正确的error handling,只是validation脚本是否被执行。 如果将set -e放在脚本的顶部,它也将终止任何错误,因此,如果脚本中出现任何错误,请不要创build该文件。

如果你想变得更复杂,你可以使用bash允许的所有错误报告和输出redirect方法,包括使用logger命令logging到系统日志。


你也可以用set -x输出脚本运行的每一行。 在DO中,输出将列在cloud-init服务的系统日志中。 你也可以像这样在一个文件中捕获它:

 #!/bin/bash set -x { do-something do-something-else } 2>/tmp/mylogfile 

与将导致像这样的文件内容:

 + do-something + do-something-else 

请注意,我用2>redirect了STDERR输出,因为这行将被发送到该stream。