Latest Posts

__DATE__和__TIME__使用注意事项


1: 时间没有更新:需要先clean,再进行编译

2:时间不是当前带时区的系统时间。是没有加时区的时间。


Read More

性能测试方法调优工具


Linux性能调优之sar详解

iostat / sar 命令详解


Read More

时间类型和时间函数


Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix 系统、类Unix系统中,也在许多其他操作系统中被广告采用。

目前相当一部分操作系统使用32位二进制数字表示时间。此类系统的Unix时间戳最多可以使用到格林威治时间2038年01月19日03时14分07秒(二进制:01111111 11111111 11111111 11111111)。其后一秒,二进制数字会变为10000000 00000000 00000000 00000000,发生溢出错误,造成系统将时间误解为1901年12月13日20时45分52秒。这很可能会引起软件故障,甚至是系统瘫痪。

 

struct tm
{
    int tm_sec;  /*秒,正常范围0-59, 但允许至61*/
    int tm_min;  /*分钟,0-59*/
    int tm_hour; /*小时, 0-23*/
    int tm_mday; /*日,即一个月中的第几天,1-31*/
    int tm_mon;  /*月, 从一月算起,0-11*/  1+p->tm_mon;
    int tm_year;  /*年, 从1900至今已经多少年*/  1900+ p->tm_year;
    int tm_wday; /*星期,一周中的第几天, 从星期日算起,0-6*/
    int tm_yday; /*从今年1月1日到目前的天数,范围0-365*/
    int tm_isdst; /*日光节约时间的旗标*/
};
 
 

 

windows GetTickCount GetTickCount是一种函数。GetTickCount返回(retrieve)从操作系统启动所经过(elapsed)的毫秒数,它的返回值是DWORD。
     
     

 


Read More

SAS OOB的误解


OOB(Out of Band) Signaling
For both SAS and SATA, the hardware initialization process begins with OOB signaling. Pronounced either as letters or as a funny-sounding syllable, OOB can be misleading because the term might be understood to mean that a dedicated signal is used rather than the normal data path. However, the SAS OOB signals do travel within the normal data path. The reason they are called OOB is because the signaling takes place before the receiver has been prepared to recognize dwords and so it is not part of the normal transmission process. Let's consider what is involved in the process of OOB communication.

 

翻译:OOB(带外)信令

对于SAS和SATA,硬件初始化过程从OOB信号开始。OOB发音为字母或听起来很有趣的音节,可能会产生误导,因为这个词可能被理解为使用专用信号而不是正常的数据路径。然而,SAS OOB信号确实在正常数据路径内传播。它们被称为OOB的原因是,信令发生在接收器准备识别数据字之前,因此它不是正常传输过程的一部分。让我们考虑一下OOB通信过程中涉及到什么。

 

解释:

SAS这个OOB与BMC的带外管理,实际是不一样的。它使用相同的物理路径。BMC的OOB使用独立的路径。


Read More

ChatGPT 4.0 编写脚本将 十六进制文本存储为二进制文件


在Python中,你可以使用以下脚本将十六进制文本存储为二进制文件:

```python
def hex_to_binary(hex_text, output_file):
    try:
        # 将十六进制文本转换为字节对象
        binary_data = bytes.fromhex(hex_text)

        # 将字节对象写入到二进制文件中
        with open(output_file, "wb") as file:
            file.write(binary_data)

        print("十六进制文本已成功转换为二进制文件。")

    except Exception as e:
        print("转换过程中出现错误:", str(e))


# 需要转换的十六进制文本
hex_text = "48656c6c6f2c20576f726c64"

# 输出的二进制文件路径和文件名
output_file = "output.bin"

hex_to_binary(hex_text, output_file)
```

你只需要修改`hex_text`和`output_file`变量的值即可。`hex_text`变量存储要转换的十六进制文本,`output_file`变量存储转换后的二进制文件的路径和文件名。运行脚本后,十六进制文本将被转换并保存为指定的二进制文件。

 

 

 

你可以使用以下Shell脚本来将十六进制文本存储为二进制文件:

```shell
#!/bin/bash

hex_text="48656c6c6f2c20576f726c64"     # 十六进制文本
output_file="output.bin"               # 输出的二进制文件路径和文件名

echo -n "$hex_text" | xxd -r -p > "$output_file"
```

脚本中的`hex_text`变量存储要转换的十六进制文本,`output_file`变量存储转换后的二进制文件的路径和文件名。

脚本使用`xxd`命令来处理转换过程。`echo -n`用于将十六进制文本输出到标准输出,后面通过管道将输出传递给`xxd`命令。`-r`选项表示将十六进制转换为二进制,`-p`选项表示输入的是纯粹的十六进制数据。

执行脚本后,十六进制文本将被转换为二进制并保存为指定的文件。


Read More

如何使用hdparm命令让硬盘进入休眠模式并查询验证。


使用hdparm命令让硬盘进入休眠模式需要使用`-y`选项。具体步骤如下:

1. 打开终端,输入以下命令,获取硬盘的设备名称:

 

sudo fdisk -l

 

找到需要使其进入休眠的硬盘设备,假设其为/dev/sdX。

2. 输入以下命令,让硬盘进入休眠模式:

 

sudo hdparm -y /dev/sdX 

这个操作需要超级用户权限,即需要使用sudo命令执行。

3. 等待一段时间,检查硬盘是否已经进入了休眠模式。可以再次使用以下命令,检查硬盘状态:

 

sudo hdparm -C /dev/sdX

如果硬盘已经进入了休眠模式,则会显示以下信息:

```
/dev/sdX:
 drive state is:  standby
```

注意:进入休眠模式后,需要定期唤醒硬盘以防止硬盘长时间处于不良状态。可以通过定期发起访问硬盘的请求或使用hdparm命令来唤醒硬盘。

 

 

 

 

 

在Linux系统中,可以使用以下命令判断硬盘是否进入了休眠模式:

```
sudo hdparm -C /dev/sdX
```

其中,`/dev/sdX`表示要检查的硬盘设备名称。

如果该硬盘设备已经进入了休眠模式,则会显示以下信息:

```
/dev/sdX:
 drive state is:  standby
```

如果硬盘设备没有进入休眠模式,则会显示以下信息:

```
/dev/sdX:
 drive state is:  active/idle
```

另外,也可以通过查看日志,来判断硬盘设备是否进入了休眠模式。例如,使用以下命令查看系统日志:

```
sudo dmesg | grep sdX
```

其中,`sdX`表示要检查的硬盘设备名称。如果该硬盘设备已经进入了休眠模式,则日志中会显示类似以下内容:

```
[sdX] APM_LEVEL = Y, ICC_TIMING = X
```

如果硬盘设备没有进入休眠模式,则日志中不会出现这个信息。


Read More

认 4.0版本 编写脚本,将一个二进制文件的内容颠倒。


在 Linux 平台上,可以使用 dd 命令结合管道符 |tac 命令实现二进制文件内容颠倒。具体命令如下:


 

shell

dd if=input_file.bin bs=1 | tac > output_file.bin

其中:

  • if=input_file.bin:表示输入文件名为 input_file.bin
  • bs=1:表示设置块大小为 1 字节,即每次读取和写入一个字节。
  • |:表示将 dd 命令的标准输出通过管道符传递给 tac 命令。
  • tac:表示将标准输入的内容按行倒序输出。
  • >:表示将 tac 命令的标准输出重定向到文件 output_file.bin 中。

需要注意的是,dd 命令默认情况下会输出一些统计信息,比如读取和写入的字节数等。如果希望去除这些信息,可以加上 status=none 参数,即:


 

shell

dd if=input_file.bin bs=1 status=none | tac > output_file.bin

 


Read More

编写脚本,将文件前30个字节删除后另存为一个文件


#!/bin/bash
echo "Please enter the filename:"
read oldfile
echo "Please enter the new filename:"
read newfile
dd if=$oldfile of=$newfile skip=30
echo "File saved as $newfile"

 

 

```
#!/bin/bash
echo "请输入原始文件名和新文件名:"
read original_file new_file
if [ ! -f $original_file ]; then
  echo "原始文件不存在"
  exit
fi
dd if=$original_file of=$new_file bs=1 skip=30
echo "文件已保存为$new_file"
```
注意事项:

1. 在脚本前面加上 `#!/bin/bash` 是告诉系统该脚本使用 bash 解释器执行。

2. 使用 `read` 命令从用户处获取输入的原始文件名和新文件名。

3. 使用 `if` 语句判断原始文件是否存在,如果不存在则输出错误信息并退出脚本。

4. 使用 `dd` 命令将原始文件的前30个字节删除后另存为一个新的文件。

5. 使用 `echo` 命令输出新文件的文件名。

 

 


Read More


© 2008-2022 CunYouLu存有录博客 村友录 存游录 鲁ICP备08005943号