Linux: 性能: sysctl vs echo vs直接使用fopen

2024-04-18 10:20

本文主要是介绍Linux: 性能: sysctl vs echo vs直接使用fopen,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

在实际的生产中,需要对系统参数做修改,有三种方式可以实现,一个是sysctl命令来修改,一个是使用echo 命令来写入,另一个是使用fopen/write接口函数来操作配置文件。
这个对比也是相当的明显,echo要比sysctl的轻便些;因为sysctl的依赖库更多,需要加载的so也就多。相对于echo,直接操作文件的方式更优。

ldd对比

<sec01-oam-a:root>/root:
# ldd /usr/sbin/sysctllinux-vdso.so.1 (0x00007ffc63dc7000)libprocps.so.7 => /lib64/libprocps.so.7 (0x00007f9e62fa2000)libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007f9e62c56000)libdl.so.2 => /lib64/libdl.so.2 (0x00007f9e62a52000)libc.so.6 => /lib64/libc.so.6 (0x00007f9e6268d000)librt.so.1 => /lib64/librt.so.1 (0x00007f9e62485000)liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f9e6225e000)liblz4.so.1 => /lib64/liblz4.so.1 (0x00007f9e62041000)libcap.so.2 => /lib64/libcap.so.2 (0x00007f9e61e39000)libmount.so.1 => /lib64/libmount.so.1 (0x00007f9e61bdf000)libgcrypt.so.20 => /lib64/libgcrypt.so.20 (0x00007f9e618c1000)libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f9e616a9000)libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f9e61489000)/lib64/ld-linux-x86-64.so.2 (0x00007f9e633d0000)libblkid.so.1 => /lib64/libblkid.so.1 (0x00007f9e61236000)libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f9e6102e000)libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f9e60e03000)libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007f9e60be2000)libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f9e6095e000)
<sec01-oam-a:root>/root:
# which echo
/usr/bin/echo
<sec01-oam-a:root>/root:
# ldd /usr/bin/echolinux-vdso.so.1 (0x00007ffccf9f0000)libc.so.6 => /lib64/libc.so.6 (0x00007f5d8b4c2000)/lib64/ld-linux-x86-64.so.2 (0x00007f5d8ba90000)

下面是sysctl的strace;

# /root/strace sysctl -w net.ipv4.conf.oam2.forwarding=1
execve("/usr/sbin/sysctl", ["sysctl", "-w", "net.ipv4.conf.oam2.forwarding=1"], 0x7ffc55a74680 /* 27 vars */) = 0
brk(NULL)                               = 0x55c5a9d04000
arch_prctl(0x3001 /* ARCH_??? */, 0x7fff46315090) = -1 EINVAL (Invalid argument)
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=24207, ...}) = 0
mmap(NULL, 24207, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f2f1f2ca000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libprocps.so.7", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0M\0\0\0\0\0\0"..., 832) = 832
lseek(3, 69224, SEEK_SET)               = 69224
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
fstat(3, {st_mode=S_IFREG|0755, st_size=83312, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f1f2c8000
lseek(3, 69224, SEEK_SET)               = 69224
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
mmap(NULL, 2252824, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1ee7b000
mprotect(0x7f2f1ee8c000, 2097152, PROT_NONE) = 0
mmap(0x7f2f1f08c000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11000) = 0x7f2f1f08c000
mmap(0x7f2f1f08f000, 73752, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2f1f08f000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libsystemd.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\235\1\0\0\0\0\0"..., 832) = 832
lseek(3, 1319560, SEEK_SET)             = 1319560
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
fstat(3, {st_mode=S_IFREG|0755, st_size=1387696, ...}) = 0
lseek(3, 1319560, SEEK_SET)             = 1319560
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
mmap(NULL, 3453880, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1eb2f000
mprotect(0x7f2f1ec72000, 2093056, PROT_NONE) = 0
mmap(0x7f2f1ee71000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x142000) = 0x7f2f1ee71000
mmap(0x7f2f1ee7a000, 952, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2f1ee7a000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\16\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=19128, ...}) = 0
mmap(NULL, 2109600, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1e92b000
mprotect(0x7f2f1e92e000, 2093056, PROT_NONE) = 0
mmap(0x7f2f1eb2d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f2f1eb2d000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\256\3\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2089936, ...}) = 0
lseek(3, 808, SEEK_SET)                 = 808
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
mmap(NULL, 3950816, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1e566000
mprotect(0x7f2f1e722000, 2093056, PROT_NONE) = 0
mmap(0x7f2f1e921000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bb000) = 0x7f2f1e921000
mmap(0x7f2f1e927000, 14560, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2f1e927000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000$\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=42744, ...}) = 0
mmap(NULL, 2128832, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1e35e000
mprotect(0x7f2f1e365000, 2093056, PROT_NONE) = 0
mmap(0x7f2f1e564000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7f2f1e564000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/liblzma.so.5", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\3205\0\0\0\0\0\0"..., 832) = 832
lseek(3, 151120, SEEK_SET)              = 151120
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
fstat(3, {st_mode=S_IFREG|0755, st_size=162192, ...}) = 0
lseek(3, 151120, SEEK_SET)              = 151120
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
mmap(NULL, 2252808, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1e137000
mprotect(0x7f2f1e15c000, 2097152, PROT_NONE) = 0
mmap(0x7f2f1e35c000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7f2f1e35c000
mmap(0x7f2f1e35d000, 8, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2f1e35d000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/liblz4.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@$\0\0\0\0\0\0"..., 832) = 832
lseek(3, 112464, SEEK_SET)              = 112464
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
fstat(3, {st_mode=S_IFREG|0755, st_size=119760, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f1f2c6000
lseek(3, 112464, SEEK_SET)              = 112464
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
mmap(NULL, 2211848, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1df1a000
mprotect(0x7f2f1df36000, 2093056, PROT_NONE) = 0
mmap(0x7f2f1e135000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x7f2f1e135000
mmap(0x7f2f1e136000, 8, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2f1e136000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libcap.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220&\0\0\0\0\0\0"..., 832) = 832
lseek(3, 26952, SEEK_SET)               = 26952
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
fstat(3, {st_mode=S_IFREG|0755, st_size=33752, ...}) = 0
lseek(3, 26952, SEEK_SET)               = 26952
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
mmap(NULL, 2126224, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1dd12000
mprotect(0x7f2f1dd19000, 2093056, PROT_NONE) = 0
mmap(0x7f2f1df18000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7f2f1df18000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libmount.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\352\0\0\0\0\0\0"..., 832) = 832
lseek(3, 348744, SEEK_SET)              = 348744
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
fstat(3, {st_mode=S_IFREG|0755, st_size=371384, ...}) = 0
lseek(3, 348744, SEEK_SET)              = 348744
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
mmap(NULL, 2462976, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1dab8000
mprotect(0x7f2f1db0e000, 2093056, PROT_NONE) = 0
mmap(0x7f2f1dd0d000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x55000) = 0x7f2f1dd0d000
mmap(0x7f2f1dd11000, 1280, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2f1dd11000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libgcrypt.so.20", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\273\0\0\0\0\0\0"..., 832) = 832
lseek(3, 1143920, SEEK_SET)             = 1143920
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
fstat(3, {st_mode=S_IFREG|0755, st_size=1187328, ...}) = 0
lseek(3, 1143920, SEEK_SET)             = 1143920
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
mmap(NULL, 3268552, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1d79a000
mprotect(0x7f2f1d8b2000, 2093056, PROT_NONE) = 0
mmap(0x7f2f1dab1000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x117000) = 0x7f2f1dab1000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0.\0\0\0\0\0\0"..., 832) = 832
lseek(3, 92624, SEEK_SET)               = 92624
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
fstat(3, {st_mode=S_IFREG|0755, st_size=99664, ...}) = 0
lseek(3, 92624, SEEK_SET)               = 92624
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
mmap(NULL, 2192080, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1d582000
mprotect(0x7f2f1d599000, 2093056, PROT_NONE) = 0
mmap(0x7f2f1d798000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7f2f1d798000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360n\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=149976, ...}) = 0
mmap(NULL, 2225344, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1d362000
mprotect(0x7f2f1d37d000, 2093056, PROT_NONE) = 0
mmap(0x7f2f1d57c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a000) = 0x7f2f1d57c000
mmap(0x7f2f1d57e000, 13504, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2f1d57e000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libblkid.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\267\0\0\0\0\0\0"..., 832) = 832
lseek(3, 311944, SEEK_SET)              = 311944
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
fstat(3, {st_mode=S_IFREG|0755, st_size=343624, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f1f2c4000
lseek(3, 311944, SEEK_SET)              = 311944
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
mmap(NULL, 2434848, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1d10f000
mprotect(0x7f2f1d15c000, 2093056, PROT_NONE) = 0
mmap(0x7f2f1d35b000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4c000) = 0x7f2f1d35b000
mmap(0x7f2f1d361000, 1824, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2f1d361000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libuuid.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\32\0\0\0\0\0\0"..., 832) = 832
lseek(3, 25296, SEEK_SET)               = 25296
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
fstat(3, {st_mode=S_IFREG|0755, st_size=33480, ...}) = 0
lseek(3, 25296, SEEK_SET)               = 25296
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
mmap(NULL, 2125856, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1cf07000
mprotect(0x7f2f1cf0e000, 2093056, PROT_NONE) = 0
mmap(0x7f2f1d10d000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7f2f1d10d000
mmap(0x7f2f1d10e000, 32, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2f1d10e000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200z\0\0\0\0\0\0"..., 832) = 832
lseek(3, 157360, SEEK_SET)              = 157360
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
fstat(3, {st_mode=S_IFREG|0755, st_size=172104, ...}) = 0
lseek(3, 157360, SEEK_SET)              = 157360
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
mmap(NULL, 2270704, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1ccdc000
mprotect(0x7f2f1cd03000, 2097152, PROT_NONE) = 0
mmap(0x7f2f1cf03000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x27000) = 0x7f2f1cf03000
mmap(0x7f2f1cf05000, 5616, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2f1cf05000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libgpg-error.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0PH\0\0\0\0\0\0"..., 832) = 832
lseek(3, 125832, SEEK_SET)              = 125832
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
fstat(3, {st_mode=S_IFREG|0755, st_size=144392, ...}) = 0
lseek(3, 125832, SEEK_SET)              = 125832
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
mmap(NULL, 2228800, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1cabb000
mprotect(0x7f2f1cada000, 2097152, PROT_NONE) = 0
mmap(0x7f2f1ccda000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1f000) = 0x7f2f1ccda000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libpcre2-8.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200#\0\0\0\0\0\0"..., 832) = 832
lseek(3, 533040, SEEK_SET)              = 533040
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
fstat(3, {st_mode=S_IFREG|0755, st_size=543304, ...}) = 0
lseek(3, 533040, SEEK_SET)              = 533040
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
mmap(NULL, 2634280, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f1c837000
mprotect(0x7f2f1c8ba000, 2093056, PROT_NONE) = 0
mmap(0x7f2f1cab9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x82000) = 0x7f2f1cab9000
close(3)                                = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f1f2c2000
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f1f2bf000
arch_prctl(ARCH_SET_FS, 0x7f2f1f2bf940) = 0
mprotect(0x7f2f1e921000, 16384, PROT_READ) = 0
mprotect(0x7f2f1d57c000, 4096, PROT_READ) = 0
mprotect(0x7f2f1cab9000, 4096, PROT_READ) = 0
mprotect(0x7f2f1ccda000, 4096, PROT_READ) = 0
mprotect(0x7f2f1eb2d000, 4096, PROT_READ) = 0
mprotect(0x7f2f1cf03000, 4096, PROT_READ) = 0
mprotect(0x7f2f1d10d000, 4096, PROT_READ) = 0
mprotect(0x7f2f1d35b000, 20480, PROT_READ) = 0
mprotect(0x7f2f1d798000, 4096, PROT_READ) = 0
mprotect(0x7f2f1dab1000, 8192, PROT_READ) = 0
mprotect(0x7f2f1e564000, 4096, PROT_READ) = 0
mprotect(0x7f2f1dd0d000, 12288, PROT_READ) = 0
mprotect(0x7f2f1df18000, 4096, PROT_READ) = 0
mprotect(0x7f2f1e135000, 4096, PROT_READ) = 0
mprotect(0x7f2f1e35c000, 4096, PROT_READ) = 0
mprotect(0x7f2f1ee71000, 32768, PROT_READ) = 0
mprotect(0x7f2f1f08c000, 8192, PROT_READ) = 0
mprotect(0x55c5a8c7c000, 4096, PROT_READ) = 0
mprotect(0x7f2f1f2d0000, 4096, PROT_READ) = 0
munmap(0x7f2f1f2ca000, 24207)           = 0
set_tid_address(0x7f2f1f2bfc10)         = 1005130
set_robust_list(0x7f2f1f2bfc20, 24)     = 0
rt_sigaction(SIGRTMIN, {sa_handler=0x7f2f1d368970, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f2f1d374cf0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {sa_handler=0x7f2f1d368a00, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2f1d374cf0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
getrandom("\x02\x56\x3e\xec\x56\xaa\x40\x97", 8, GRND_NONBLOCK) = 8
brk(NULL)                               = 0x55c5a9d04000
brk(0x55c5a9d25000)                     = 0x55c5a9d25000
statfs("/sys/fs/selinux", {f_type=SELINUX_MAGIC, f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={val=[0, 0]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RELATIME}) = 0
statfs("/sys/fs/selinux", {f_type=SELINUX_MAGIC, f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={val=[0, 0]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RELATIME}) = 0
access("/etc/selinux/config", F_OK)     = -1 ENOENT (No such file or directory)
access("/etc/system-fips", F_OK)        = -1 ENOENT (No such file or directory)
access("/etc/gcrypt/fips_enabled", F_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/proc/sys/crypto/fips_enabled", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(3, "0\n", 1024)                    = 2
close(3)                                = 0
prctl(PR_CAPBSET_READ, CAP_MAC_OVERRIDE) = 1
prctl(PR_CAPBSET_READ, 0x30 /* CAP_??? */) = -1 EINVAL (Invalid argument)
prctl(PR_CAPBSET_READ, 0x28 /* CAP_??? */) = 1
prctl(PR_CAPBSET_READ, 0x2c /* CAP_??? */) = -1 EINVAL (Invalid argument)
prctl(PR_CAPBSET_READ, 0x2a /* CAP_??? */) = -1 EINVAL (Invalid argument)
prctl(PR_CAPBSET_READ, 0x29 /* CAP_??? */) = -1 EINVAL (Invalid argument)
openat(AT_FDCWD, "/proc/self/auxv", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0400, st_size=0, ...}) = 0
read(3, "!\0\0\0\0\0\0\0\0\2603F\377\177\0\0003\0\0\0\0\0\0\0\360\6\0\0\0\0\0\0"..., 1024) = 336
close(3)                                = 0
openat(AT_FDCWD, "/proc/sys/kernel/osrelease", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(3, "4.18.0-513.11.1.el8_9.x86_64\n", 1024) = 29
close(3)                                = 0
openat(AT_FDCWD, "/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 3
read(3, "0-1\n", 8192)                  = 4
close(3)                                = 0
openat(AT_FDCWD, "/proc/self/auxv", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0400, st_size=0, ...}) = 0
read(3, "!\0\0\0\0\0\0\0\0\2603F\377\177\0\0003\0\0\0\0\0\0\0\360\6\0\0\0\0\0\0"..., 1024) = 336
close(3)                                = 0
stat("/proc/sys/net/ipv4/conf/oam2/forwarding", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
openat(AT_FDCWD, "/proc/sys/net/ipv4/conf/oam2/forwarding", O_WRONLY|O_TRUNC) = 3
write(3, "1\n", 2)                      = 2
close(3)                                = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0x2), ...}) = 0
write(1, "net.ipv4.conf.oam2.forwarding = "..., 34net.ipv4.conf.oam2.forwarding = 1
) = 34
close(1)                                = 0
close(2)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++

下面是echo的strace

<sec01-oam-a:root>/proc/sys/net/ipv4/conf/oam2:
# /root/strace echo 1 > forwarding
execve("/usr/bin/echo", ["echo", "1"], 0x7fff4224fe48 /* 27 vars */) = 0
brk(NULL)                               = 0x55c8e50b8000
arch_prctl(0x3001 /* ARCH_??? */, 0x7ffd56e37120) = -1 EINVAL (Invalid argument)
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=24207, ...}) = 0
mmap(NULL, 24207, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f372727d000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\256\3\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2089936, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f372727b000
lseek(3, 808, SEEK_SET)                 = 808
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32) = 32
mmap(NULL, 3950816, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f3726c90000
mprotect(0x7f3726e4c000, 2093056, PROT_NONE) = 0
mmap(0x7f372704b000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bb000) = 0x7f372704b000
mmap(0x7f3727051000, 14560, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f3727051000
close(3)                                = 0
arch_prctl(ARCH_SET_FS, 0x7f372727c540) = 0
mprotect(0x7f372704b000, 16384, PROT_READ) = 0
mprotect(0x55c8e3bd3000, 4096, PROT_READ) = 0
mprotect(0x7f3727283000, 4096, PROT_READ) = 0
munmap(0x7f372727d000, 24207)           = 0
getrandom("\x57\x18\x64\x5a\x85\x50\x8b\xf1", 8, GRND_NONBLOCK) = 8
brk(NULL)                               = 0x55c8e50b8000
brk(0x55c8e50d9000)                     = 0x55c8e50d9000
brk(NULL)                               = 0x55c8e50d9000
fstat(1, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
write(1, "1\n", 2)                      = 2
close(1)                                = 0
close(2)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++

直接使用fopen/write接口函数

实现配置文件的修改,这个方法在应用程序,非脚本语言里,速度更快。可以尝试。

这篇关于Linux: 性能: sysctl vs echo vs直接使用fopen的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/914510

相关文章

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符