我想创建一个BASH脚本,我可以输入一个参数来确定我将从vmstat获得什么样的输出。
我当前的脚本看起来像这样,但它太僵硬了:
#!/bin/bash
start_perfmon () {
vmstat -S M -n -w 3 >> $(date +"%Y%m%d-%H%M")_Overall.log & vmstat -d -S M -n -w 3 >> HDD_RAW.log
}
start_perfmon
应该这样工作:
./ start_perfmon.sh整体 - 运行:
vmstat -S M -n -w 3 >> $(date +"%Y%m%d-%H%M")_Overall.log
./ start_perfmon.sh disk - runs:
vmstat -d -S M -n -w 3 >> HDD_RAW.log
./ start_perfmon.sh运行我现在的代码:
vmstat -S M -n -w 3 >> $(date +"%Y%m%d-%H%M")_Overall.log & vmstat -d -S M -n -w 3 >> HDD_RAW.log
我已经在PowerShell中创建了一个模拟脚本:
(我相信能够帮助我的人,理解逻辑,而不是真正了解PowerShell。)
Function Start-Perfmon {
[CmdletBinding()]
Param (
[Parameter(Position=0)]
[switch]$Overall,
[Parameter(Position=1)]
[switch]$Disk
)
If ((!$Overall) -and (!$Disk)) {
vmstat -S M -n -w 3 >> $(date +"%Y%m%d-%H%M")_Overall.log & vmstat -d -S M -n -w 3 >> HDD_RAW.log
}
Else {
If ($Overall) {
vmstat -S M -n -w 3 >> $(date +"%Y%m%d-%H%M")_Overall.log
}
If ($Disk) {
vmstat -d -S M -n -w 3 >> HDD_RAW.log
}
}
}