1,ps 有很多参数 e和x都是输出所有进程,但是实际测试e会多输出一些已经死掉的进程
2,ps的f是指format,格式后仅比a多一些作用不太大的参数,例如uid,ppid,实际可以使用u,多输出一些包括cpu占用,内存占用的信息
3,ps以及free输出的内存信息包括vss和,vsz指virtual size,rss指resident set size,前者包括虚拟内存大小,无太大参考意义,后者表示常驻内存,表示实际物理占用的内存,但是由于rss包含动态库的内存,所以由于共享动态库的重复,所有进程的rss相加大于总占用物理内存。
4,查看网络连接可以用netstat和ss,netstat属于net-tool工具集,但基本被淘汰,ss属于iproute工具集
5,一致性哈希算法,看到的一篇文章,感觉在分布式处理中有点用,如果将一堆数据保存在三台服务器中,需要使用保存方法和访问方法,通过计算hash值,将数据名通过某种(java中通常计算名字中包含符号的ascall码之和)方法计算哈希值,然后对服务器个数求余,这样得到的数字即为服务器序号。当其中一台服务器失效时,可以通过一种圆环模型,即将求余数的数值从服务器数改为2*32,然后将服务器平均分到2*32序列当中,数据求余后得到的数如果不是服务器序号,就一直自加,加到服务器序号为止,当然由于是个环模型,所以加到2*32时会重置为1
6,32位linux和64位linux变量范围区别只需要记住:
32位linux的long和指针都是4字节,二64位linux的long和指针都是8字节。
7,shell注意单引号和反引号的区别:
单引号‘’:表示字符串,字符串内部的字符将解析成其原本意思,包括反斜线\不会转义。
反引号``:和$一起使用表示执行命令,返回命令执行结果,同$()
8,关于git的几种状态
按照untracked unmodified modified staged来分的话有一点比较疑惑,那就是一个文件既可以是modified也可以是staged,所以这样划分不是按照同一个属性来划分的,可以稍改下划分方法
unmodified untracked tracked staged
例如:文件A->修改为A'->add->commit
状态变化为:unmodified ->tracked->staged->unmodified
例如:新增文件B->add->commit
状态变化为:untracked->staged->unmodified
9,大端字节序和小端字节序
最好不要用前后来区分,而是用地址位来区分。
大端字节序:低位地址存放高位数据。
小端字节序:高位地址存放高位数据
由于变量的地址始终是低位地址,通过地址偏移来访问高位数据,所以各个字节序有以下有点:
大端字节序:最快访问符号位,条件判断语句执行快。
小端字节序:最快访问低位数据,整型数据转换速度快。
10,查看磁盘空间
df -h
fdisk
du -sh
11、linux 内存分布图
12,linux syslog
默认保存在/var/log/syslog中
头文件<syslog>
使用接口openlog,syslog,closelog
13,Linux shell export,env,set,declare区别
①、shell中有三种变量:内部变量,环境变量,用户变量
内部变量:系统提供,不用定义,不能修改
例如:
#echo $0
-sh
环境变量:系统提供,不用定义,可以修改,子进程有效
例如:
#echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/fhrom/fhshell:/fhrom/bin
用户变量:用户定义,可以修改(可以使用export将用户变量),子进程无效
例如:
#NAME=xiaoshixiu
#echo $NAME
xiaoshixiu
②、env,declare,set,export四个命令都能显示shell变量:
env显示用户的环境变量(包括了export显示出来的和一些没有被导出为环境变量的系统变量)
例如:
#env
USER=root
LD_LIBRARY_PATH=/lib:/usr/lib:/fhrom/lib:/gokesdk/lib
SHLVL=1
OLDPWD=/var/log
HOME=/root
PS1=\$
LOGNAME=root
TERM=vt102
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/fhrom/fhshell:/fhrom/bin
SHELL=/bin/sh
PWD=/var
TZ=CST-08:00
export显示当前导出为环境变量的shell变量(和env内容相同,不过形式不同)
例如:
$export
export HOME='/root'
export LD_LIBRARY_PATH='/lib:/usr/lib:/fhrom/lib:/gokesdk/lib'
export LOGNAME='root'
export OLDPWD='/var/log'
export PATH='/usr/bin:/bin:/usr/sbin:/sbin:/fhrom/fhshell:/fhrom/bin'
export PS1='$'
export PWD='/var'
export SHELL='/bin/sh'
export SHLVL='1'
export TERM='vt102'
export TZ='CST-08:00??'
export USER='root'
set显示当前shell定义的变量,包括环境变量,用户变量
例如:
$set
HISTFILE='/root/.ash_history'
HOME='/root'
HOSTNAME='(none)'
IFS='
'
LD_LIBRARY_PATH='/lib:/usr/lib:/fhrom/lib:/gokesdk/lib'
LOGNAME='root'
NAME='xiaoshixiu'
OLDPWD='/var/log'
OPTIND='1'
PATH='/usr/bin:/bin:/usr/sbin:/sbin:/fhrom/fhshell:/fhrom/bin'
PPID='725'
PS1='$'
PS2='> '
PS4='+ '
PWD='/var'
SHELL='/bin/sh'
SHLVL='1'
TERM='vt102'
TZ='CST-08:00??'
USER='root'
_='env'
declare和set一样
③、declare声明的变量是用户变量,export声明的变量是环境变量
14,好用的linux工具
火焰图生成工具:Flame Graphs