提高linux脚本cpu和内存使用率

提高linux脚本cpu和内存使用率,第1张

linuxt提供了系统函数sysconf()用来读取CPU和内存信息,先来了解一下sysconf()函数吧。

头文件

#include<unistd.h>

函数原型

long sysconf (int name)

说明

sysconf() 返回选项 ( 变量) 的当前值,这个值可配置的但也是受系统限制的。在成功完成的情况下,sysconf() 返回 变量的当前值。该值受到的限制将少于编译时 <limits.h>, <unistd.h>或 <time.h>中可用的对应值。大多数这些 变量的值在调用进程的生存时间内不变。

如果出错,那么函数返回 -1 ,并适当地设置 errno 。当没有错误发生时, -1 也是一个合法的返回值。因此,程序要检查错误,应该在调用 sysconf() 之前将 errno 设置为 0 ,然后,如果返回 -1,则检验到错误。

参数 name 指定我们感兴趣的运行时限制的名字,它必须是以值中之一(除非另有说明,否则返回值都是整数):

_SC_2_C_BIND : 一个布尔值,指出是否支持 POSIX C 语言绑定。返回值是 _POSIX2_C_BIND 。

_SC_2_C_DEV : 一个布尔值,指出是否支持 POSIX C 语言开发使用工具选项。返回值是 _POSIX2_C_DEV 。

_SC_2_C_VERSION : 它指出支持哪一个 ISO POSIX.2 标准 (命令) 的版本。返回值是 _POSIX2_C_VERSION 。

_SC_2_CHAR_TERM : 一个布尔值,指出是否至少支持一个 终端。返回值是 _POSIX2_CHAR_TERM 。

_SC_2_FORT_DEV : 一个布尔值,指出是否支持 FORTRAN 开发使用工具选项。返回值是 POSIX2_FORT_DEV 。

注意:1、 CLK_TCK 的值是可变的,因此,不应该假设它是一个 编译时间 常量。

2、调用 setrlimit 会使 OPEN_MAX 的值发生改变。

3、 通过将 sysconf (_SC_PHYS_PAGES) 和 sysconf (_SC_PAGESIZE) 相乘,来确定 物理内存的总量 (以 字节为单位) 可以返回一个值,该值超出 32 位进程中 long 或 unsigned long 可表示的最大值。同样适用于通过将 sysconf (_SC_PAGESIZE) 和 sysconf (_SC_AVPHYS_PAGES) 想乘,来确定未使用的 物理内存的总量 (以 字节为单位)。这个问题有两个工作区。第 1 个工作区将程序作为 64 位的进程进行编译 (从而使 long 足够大到可以容纳乘法运算的结果) ,但是,这样做的缺点是得到的程序只能在 64 位的内核中运行。第 2 个工作区是用来将得到的乘法运算结果存储在一个 64 位的量中,如 longlong_t (Solaris OS 类型) 或 long long (linux)。它的有点是可以在 32 位和 64 位的内核中正确工作。

Linux配置开机自启动执行脚本的方法有很多,这里分享两种方法,分别是修改/etc/rc.local方法和chkconfig管理设置的方法,均可实现Linux配置开机自启动执行脚本的功能!

设置test.sh为开机要启动的脚本

[root@oldboy scripts]# vim /server/scripts/test.sh

[root@oldboy scripts]# cat /server/scripts/ test.sh

#!/bin/bash

/bin/echo $(/bin/date +%F_%T) >>/tmp/ test.log

方法一:修改/etc/rc.local

[root@oldboy ~]# ll /etc/rc.local

lrwxrwxrwx. 1 root root 13 Mar 30 10:50 /etc/rc.local ->rc.d/rc.local

修改/etc/rc.local文件

[root@oldboy scripts]# tail -n 1 /etc/rc.local

/bin/bash /server/scripts/test.sh >/dev/null 2>/dev/null

重启系统,查看结果

[root@oldboy ~]# cat /tmp/test.log

2018-03-30_12:00:10

方法二:chkconfig管理

删除掉方法一的配置

[root@oldboy ~]# vim /etc/init.d/test

#!/bin/bash

# chkconfig: 3 88 88

/bin/bash /server/scripts/test.sh >/dev/null 2>/dev/null

[root@oldboy ~]# chmod +x /etc/init.d/test

添加到chkconfig,开机自启动

[root@oldboy ~]# chkconfig --add test

[root@oldboy ~]# chkconfig --list test

test 0:off 1:off 2:off 3:on 4:off 5:off 6:off

重启系统,查看结果

[root@oldboy ~]# cat /tmp/test.log

2018-03-30_12:00:10

2018-03-30_12:33:20

*** 作成功

关闭开机启动

[root@oldboy ~]# chkconfig test off

[root@oldboy ~]# chkconfig --list test

test 0:off 1:off 2:off 3:off 4:off 5:off 6:off

从chkconfig管理中删除test

[root@oldboy ~]# chkconfig --list test

test 0:off 1:off 2:off 3:off 4:off 5:off 6:off

[root@oldboy ~]# chkconfig --del test

[root@oldboy ~]# chkconfig --list test

service test supports chkconfig, but is not referenced in any runlevel (run 'chkconfig --add test')


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7354673.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存