Linux Bash:检查脚本是否已在此计算机上运行

Linux Bash:检查脚本是否已在此计算机上运行,linux,bash,performance,uniqueidentifier,Linux,Bash,Performance,Uniqueidentifier,我有一个bash脚本,可以运行几个实验(实现的时间安排等),但是如果已经运行了,我不想运行相同的实验 当同一台计算机生成一个包含280行的输出文件时,已经进行了一个实验 我现在做的是(所有实验): 但这不会检查实验是否在同一台计算机上运行。我最初的想法是使用ip链接show eth0 | awk'/ether/{print$2}'获取计算机的MAC地址,然后将输出文件存储在一个目录中,例如statistics/ff:ff:ff:ff/experiment1.csv,但是(假设安装了ip)是否保证

我有一个bash脚本,可以运行几个实验(实现的时间安排等),但是如果已经运行了,我不想运行相同的实验

当同一台计算机生成一个包含280行的输出文件时,已经进行了一个实验

我现在做的是(所有实验):


但这不会检查实验是否在同一台计算机上运行。我最初的想法是使用
ip链接show eth0 | awk'/ether/{print$2}'
获取计算机的MAC地址,然后将输出文件存储在一个目录中,例如
statistics/ff:ff:ff:ff/experiment1.csv
,但是(假设安装了
ip
)是否保证上述命令将返回MAC地址?或者是否有其他方法可以从bash脚本中唯一地标识计算机

使用
dmidecode
。它检查系统并返回制造商设置的序列号。你有几个选择。您可以使用
dmidecode-t2
返回如下内容:

           Handle 0x0002, DMI type 2, 8 bytes.  Base Board Information
           Manufacturer: Intel
           Product Name: C440GX+
           Version: 727281-001
           Serial Number: INCY92700942
在上面的示例中,您可以看到主板的序列号,但看不到系统的序列号。为此,您可以使用
dmidecode-t1
。解析所有这些内容可能会很麻烦,所以只需通过sha256sum进行管道传输,并获得一个简单的散列


使用
dmidecode-s系统uuid
也很有用。

也许您可以使用主机名而不是IP或MAC地址?我认为,对于我的用例,这应该足够了!
           Handle 0x0002, DMI type 2, 8 bytes.  Base Board Information
           Manufacturer: Intel
           Product Name: C440GX+
           Version: 727281-001
           Serial Number: INCY92700942