分类:Linux

Home / 分类:Linux

Linux读写IO负载

2015-11-7 22:21:20 | Linux | 没有评论

磁盘IO读写的监控有一些实用的工具,做个总结

1:iotop

顾名思义,top前面加了一个io;安装起来也很方面,直接装就是了,运行也简单

~# iotop -o
Total DISK READ:       0.00 B/s | Total DISK WRITE:     664.62 M/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPI[......]

Read more

SSH Agent Forwarding

2015-11-5 00:46:57 | Linux | 没有评论

今天在和SA处理新环境的时候,被鄙视了一顿,因为是通过一台跳转始终无法跳到最终的目的机器,他始终就给我来一个词:forwarding!!!我表示,我直接将key也copy过去的,最后没办法,过去被鄙视了一顿,加个-A的确就好了,后来才发现,我copy的key不是对应应该forwarding,不过这还是自己的问题,思维不够敏捷

我想登陆到测试机VM2上,必须要经过一个跳转机VM1,才能跳转到VM2

[……]

Read more

SSH通过CONFIG配置各种登陆

2015-11-4 23:50:28 | Linux | 没有评论

可能用习惯了XSHELL,CRT那种记录会话的登陆方式,命令行SSH好像缺少了登陆的快感,其实不然,只需要自行配置一个config文件即可

~ on  master! ⌚ 23:37:56
$ vim .ssh/config

Host $SSH_NAME
        HostName        $IPADDR
        Port            $PORT[......]

Read more

Debian7的iptables开关

2015-11-4 11:11:01 | Linux | 没有评论

debian上重启个iptables,关一下十分不习惯

关闭如下

#!/bin/bash

iptables-save > iptables.rules

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P[......]

Read more

OpenVPN in Linux containers

2015-10-2 21:38:01 | Linux | 没有评论

通过一台LXC,连接OpenVPN跳转,通过tun方式,结果发现lsmod都找不到tun设备,的确连/dev/net目录都没有,差点都开始怀疑人生的时候,仔细想了下环境影响,LXC毕竟和普通虚拟机是不同的,仔细搜索了下,容器与其宿主机是共用同一个内核,因此肯定是不能像普通linux下加载模块那样modprobe一下,具体加载tun方法如下:

首先找到LXC配置文件,在最后加上下面一行

## fo[......]

Read more

Linux namespace

2015-6-30 03:23:15 | Linux | 没有评论

linux下命名空间是一种环境隔离的方法,基于内核态,通过命名空间可以将一些进程抽象到不同的容器中,使得各个容器彼此隔离,但是隔离之后相互间能否存在一些共享,就看你创建namespace的选项了

目前namespaces官方有如下种类:

 Mount namespaces	CLONE_NEWNS
 UTS namespaces	 	CLONE_NEWUTS
 IPC namespaces	 	CL[......]

Read more

非私钥用户SSH登录

2015-6-11 19:59:54 | Linux | 没有评论

一般通过VPN+私钥登录,以root账户ssh,但是假如有其它user要用,通过su user来切换,容易带来很多奇怪的问题,最好直接通过user来进行登录,前提是有些因素不允许一直用root

debian7下具体过程:

1:私钥root登录

2:修改配置

vi /etc/ssh/sshd_config # Change to no to disable tunnelled clear text p[......]

Read more

Linux文件缓冲区

2015-1-27 13:03:49 | Linux | 没有评论

标准库函数提供带缓冲区的文件操作,将会在用户空间中自动为正在使用的文件开辟内存缓冲区

对于全缓冲区,会塞满整个缓冲区再来进行IO系统调用操作,通常磁盘文件的操作都是全缓冲来访问,打印一下缓冲区大小

#include <stdio.h>

int main(){
    printf("%d\n", BUFSIZ);
    return 0;
}
[lihui@localhost ~]$[......]

Read more

Linux日志记录

2015-1-26 00:25:16 | Linux | 没有评论

经常系统某个进程出现异常,就会不自然地通过查看log日志来定位问题,大多数的信息都是通过用户进程调用syslog来产生日志信息

一般进程读取的是syslog.conf配置文件,这个配置文件决定了不同种类的信息会送往何处,但在CentOS6.4上找不到这个配置文件,但是有一个rsyslog.conf文件,而且传统的守护进程syslogd也没有,应该是RHEL做了相应的修改

接口函数,指定了送信息的位[……]

Read more

pid_t数据类型

2015-1-21 11:33:48 | Linux | 没有评论

CentOS6.4上,线程ID数据类型pthread_t在<bits/pthreadtypes.h>里定义了unsigned long,而进程ID的类型稍微稍微绕圈子一点

在unistd.h和sys/types.h都能找到:

<unistd.h>

# ifndef __pid_t_defined typedef __pid_t pid_t; # define __pid_t_[......]

Read more

格式化输出

2015-1-16 21:10:12 | Linux | 没有评论

printf一系列函数能将各种不同类型的参数进行格式编排和输出,每个参数在输出流中的表现形式由格式参数format来控制,包含了需要输出的普通字符和转换控制符代码的字符串,转换控制符规定了其余参数的输出方式和输出地方

#include <stdio.h>

int printf(const char *format, ...);
int sprintf(char *s, const ch[......]

Read more

IO效率

2015-1-3 17:18:31 | Linux | 没有评论

ssize_t read(int filedes, void *buf, size_t nbytes);

read函数从打开的文件中读取数据;如果成功则返回读取的字节数,如果已经到文件结尾则返回0,如果出错则返回-1

nbytes是要求读取的字节数,读取之后存放在缓冲区buf中,同时文件读写位置后移;当函数返回,buf中前返回值个字节是读取来的,而实际读取的返回值字节数有可能会小于请求读取的字节数[……]

Read more

Cygwin生成APUE静态库

2015-1-2 22:53:29 | Linux | 没有评论

想将APUE里所有源文件编译成一个库,然后直接可以用,就直接Cygwin里操作:

1:vim Make.defines.linux 自定义修改绝对路径

WKDIR=/home/hui/apue.2e

2:vim std/linux.mk

将nawk修改成awk

看了下Makefile,需要遍历好多文件夹,想都没想,直接Make,然后最小化,让它慢慢搞就是了,可是突然搞着搞着,死机了!!!这是神马情[……]

Read more

Linux库文件

2014-12-24 00:39:47 | Linux | 没有评论

静态库一般后缀为.a,lib和.a之间就是库的名字,由于整个库的内容都被整到了目标代码中,因此编译出来的执行程序比较大,但是优点就是不需要再依赖外部的函数库,当然如果静态库内容变了,整个程序也必须得重新编译;使用静态库,链接器会找出程序所需要的函数,然后将他们完整copy到执行文件,因此一旦链接成功,静态库也就不需要了

动态库一半后缀为.so,lib和.so之间就是库的名字,当然有时候还包括版本号[……]

Read more

Linux查看进程启动时间

2014-11-25 00:37:45 | Linux | 没有评论

今天给客户定位问题,根据产生的log日志还无法确认结果,因为日志不完整,导致无法得知update的时候的进程号是多少,因此没法得知是否有过重启,后来想是否可以直接查到此刻运行的进程的启动时间,man了一下ps的命令,果然有:

1:查询进程pid

pgrep XXXX

其实通过命令ps aux | grep XXXX也会有一个粗略的起始时间,但是只显示到了日期以及后面一个不太清楚的数字:

[lihu[……]

Read more

Linux下top查看线程

2014-11-25 00:26:26 | Linux | 没有评论

通常我们可以通过top命令查看各个进程占用的资源,按1即可查看各个CORE的忙碌情况,假如想看看多线程程序各个线程的资源情况

1:top

2:输入大写H

3:回车

就可以得到下面内容,然后可以f,j回车,甚至连每个线程绑定的cpu core也能打印出来,爽歪歪~!

  PID USER      PR  NI  VIR[……]

Read more

Linux标准输入,标准输出,标准错误输出

2014-11-18 22:51:35 | Linux | 没有评论

今天在输出define的过程中,有一中间步骤,保存编译make的产生所有warning信息的时候,对重定向的标准错误输出进行了逐个对比,最终发现自己杞人忧天

在linux下,这是三个特别的文件:

标准输入,可以找到/dev/stdin,一般bash里0来代替,代表键盘的输入

标准输出,可以找到/dev/stdout,一般bash里1来代替,代表屏幕的非错误输出

标准错误输出,可以找到/dev/st[……]

Read more

crontab里定时svn up

2014-11-18 01:25:45 | Linux | 没有评论

弄了老半天,要注意的地方有:

1:svn是否是自己编译源代码安装的,如果用的是/usr/local/bin下面的,请在自动化svn update时,添加svn绝对路径;假如是yum或者系统自带的svn,在目录/usr/bin下面,可以不用带绝对路径,请查阅/etc/crontab的环境变量

2:crontab里所有执行脚本以及命令尽量都带绝对路径

3:执行的定时脚本,请通过pwd打印出执行脚本的当[……]

Read more

Linux无需密码SSH登陆

2014-11-17 20:39:55 | Linux | 没有评论

今天自动化检测里有一步需要定时svn checkout,然后进行编译,而checkout需要验证passwd,正巧我们用的这svn是基于svn+ssh的,所以懒得去弄所谓的保存,缓存svn密码登录,直接将svn服务器配成是无需密码ssh来login即可,具体方法:

假如目标是服务器1请求不输入密码直接SSH登陆服务器2,一定要弄清楚清楚自己在服务器1上到底是用哪个用户名以及不需要密码来登陆服务器2[……]

Read more

Linux各服务对应的脚本的运行级别

2014-11-14 15:02:36 | Linux | 没有评论

最近想花点时间把/etc/rc.local里有些内容通过添加到系统服务的开机启动脚本里,毕竟通过service来控制才是正道,而且还能控制运行级别,可控性更强

各种服务的运行级别一般有下面一些,可以通过chkconfig查询:

0:关机

1:单用户

2:多用户,不能nfs

3:多用户,还可以nfs

4:不明

5:Xwindow

6:重启

想修改级别可以chkconfig –level 2345[……]

Read more

Linux设置开机启动

2014-11-14 01:12:36 | Linux | 没有评论

今天一如既往地把开机加载网卡驱动的命令塞到了/etc/rc.local,突然想到这种方法其实是懒人的方法,以前都还一步一步设置好chkconfig的

随便写写,至于钻研深层内涵就免了

1:刚说的懒人法

假如需要开机启动的是一个命令,或者需要执行什么脚本,没有其他要求的前提下,可以直接将命令或者脚本放到/etc/rc.local的最后,也就是:

echo ‘reboot’>> /etc/[……]

Read more

Linux查看网口是否接上网线

2014-11-10 15:05:51 | Linux | 没有评论

通常有时候犯一些低级错误,比如网线没有插上,这时候输入都没有弄好,再去到处找问题为什么没有数据,就会浪费时间,所以首先必须确定客观因素没问题,在linux下大概可以这样确认数据网口(非通信口)的网线是否插好无误

1:通过ifconfig查看TX

在网口插上了网线之后,假如没有任何数据传输,该网口的TX bytes也会有少量的数据,如:

xge0    &nb[……]

Read more

CentOS挂载本地YUM源

2014-11-9 12:41:28 | Linux | 没有评论

redhat一直都习惯直接通过DVD挂载本地yum源,直接安装自带的版本软件包,而centos由于提供在线yum源,一般都在线直接yum install,但是在线安装的可能是更新的版本,与系统自带的不匹配,比如需要安装一个kernel-devel,而在线版本比所安装的centos的kernel版本高,那么就只有去网上下载对应版本了,比较麻烦,直接挂载dvd,安装对应的devel可能会省一些事

由于[……]

Read more

RPM database Error

2014-11-7 22:23:39 | Linux | 没有评论

今天南京一哥们在安装一个rpm的时候,报了如下错误:

rpmdb: Thread/process 25277/140696976578304 failed: Thread died in Berkeley DB library

error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run data[……]

Read more

修改igb驱动程序支持i354

2014-11-5 23:52:47 | Linux | 没有评论

让我按i350的模子,修改驱动程序,使得i354也能够加载成功,按diff文件改了半天,还是有的地方完全不明白,最后放弃了,可惜涛哥不在,下面是老外某位大神修改的的diff文件:

 drivers/net/ethernet/intel/igb/e1000_82575.c   | 122 ++++++++++++++++++++++++-
 drivers/net/ethernet/intel/igb[......]

Read more

Backtrack 5安装skype没声音

2014-11-1 18:25:55 | Linux | 没有评论

Backtrack 5安装的skype声音输出有问题,复杂的解决方法,可能不太好,但解决哥的问题就OK

首先卸载掉 PulseAudio:

sudo apt-get remove pulseaudio

sudo killall pulseaudio

然后安装 audiohacks :

sudo add-apt-repository ppa:dtl131/ppa 

sudo apt-get[……]

Read more

RHEL制作RPM的几个关键地方

2014-11-1 12:22:54 | Linux | 没有评论

在RHEL,CentOS,Fedora人人都会yum install或者rpm -ivh来进行软件的安装,但是老是安装拥有别人署名,Licence以及其他资料的RPM总感觉不太过瘾,比如rpm -qi kernel看到的肯定就是操作系统厂商的信息了,如何自己制作一个拥有自己署名的独立软件呢,下面就会给你答案,因为最开始一窍不通的时候,也是参考了网上的各种说法,所以自己的做法很多可能不是太专业,仅仅[……]

Read more

动态修改CPU Affinity

2014-11-1 12:14:03 | Linux | 没有评论

多核并行程序如果设置不好cpu affinity,程序运行性能会有可能达到10倍的差距,我所见过的多线程程序每个thread都会在程序当中给绑定特定的core;但是假如是进程,也就是启动某一个程序,一般会人为地通过taskset来强制指定该程序运行在哪一个或者哪几个core上,让他们乖乖得呆着,避免冲突

假如程序已经运行,不希望停止该进程,动态修改它运行的core,让它运行在core_arr[……]

Read more

REHL配置本地YUM源

2014-11-1 11:56:41 | Linux | 没有评论

Ubuntu除了吸引人的炫丽界面,还有apt-get对于软件应用安装有着良好的用户体验,而作为另一阵营的RHEL,CentOS,Fedora大同小异,都是通过yum来进行

Fedora通过yum源安装的软件永远都是最新版本,给你最超前的体验,当然或多或少就会出现兼容性或者不稳定性的情况,所以当相互之间版本依赖性过强,很多软件还是要手动下载对应源代码进行编译安装

CentOS也能通过yu[……]

Read more

Perl Cpu Affinity

2014-11-1 11:54:29 | CPU, Linux, Perl | 没有评论

在多核体系结构上,cpu affinity的合理运用对并行程序运行性能的影响举足轻重,为了避免资源竞争,会将不同的进程或者线程绑在不同的核上执行,充分发挥多核并行的性能优势

在linux操作系统里,可以通过shell里taskset命令直接对程序运行或者正在运行的进程的pid进行绑核,只需要lscpu或者/proc/cpuinfo得到cpu核的NUMA结构以及编号,进行合理的设置cpu af[……]

Read more