1.ps的用法
ps -ef
其中各列的内容意思如下(8列)
UID //用户ID、但输出的是用户名
PID //进程的ID
PPID //父进程ID
C //进程占用CPU的百分比
STIME //进程启动到现在的时间
TTY //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
CMD //命令的名称和参数
ps -aux
同ps -ef 不同的有列有(11列)
%CPU //进程占用的CPU百分比
%MEM //占用内存的百分比
VSZ //该进程使用的虚拟內存量(KB)
RSS //该进程占用的固定內存量(KB)(驻留中页的数量)
STAT //进程的状态
START //该进程被触发启动时间
TIME //该进程实际使用CPU运行的时间
2.kill
kill命令用来中止一个进程。
杀死进程最安全的方法:kill pid
强行中止:kill -9 pid
和缓的重启进程:kill -HUP PID
使用进程名字中止:killall httpd
杀死它和它的子进程: kill -TERM PPID
3.crontab配置 , 如何实现每秒执行
第一列 分钟: 1——59
第二列 小时: 1——23(0表示子夜)
第三列 日 : 1——31
第四列 月 : 1——12
第五列 星期: 星期0——6(0表示星期天,1表示星期一、以此类推)
第六列 要运行的命令
http://blog.csdn.net/fdipzone/article/details/22701113
4.进程和线程的区别
进程就是一个“执行中的程序”,它是一个动态的概念,它可以申请和拥有系统资源。
进程作为分配资源的基本单位
线程是进程中的一部分,进程中可以包含若干个线程,它们可以利用进程所拥有的资源。
线程作为独立运行和独立调度的基本单位。
由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。
5.进程的状态
三态模型
(1)运行:当一个进程在处理机上运行时,则称该进程处于运行状态。
(2)就绪:当一个进程获得了除处理机以外的一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态。
(3)阻塞:也称为等待或睡眠状态,一个进程正在等待某一事件发生(例如请求I/O而等待I/O完成等)而暂时停止运行,这时即使把处理机分配给进程也无法运行,故称该进程处于阻塞状态。
五态模型:对于一个实际的系统,进程的状态及其转换更为复杂。引入新建态和终止态构成了进程的五态模型。
6.chmod chown chgrp
(1)chmod 变动文件属性 r=4,w=2,x=1
格式:chmod 777 file 三个数字代表User、Group、及Other的权限
(2)chown 转变文件拥有者 -R选项意味着对所有子目录下的文件也都进行同样的操作
格式:chown 用户名:用户组:文件/目次 例: chown -R root:root /home
(3)chgrp 转变文件所属用户组 -R选项意味着对所有子目录下的文件也都进行同样的操作
格式:chgrp 用户组 文件名 例:chgrp -R user smb.conf
7. vim
(1)替换: 使用 :s 命令来替换字符串
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
(2)查找: 使用/word 下一个n 上一个N
(3) 剪切一行:dd (4)复制一行:yy (5)粘贴:p
(6)定位:gg定位到第一行,G定位到最后一行
(7)删除所有行:1,$d (8)撤销: u (9)反撤销:ctrl+r
8.rm
删除Linux系统中的文件或目录
要慎用rm -rf *这样的命令
-f 强制删除,忽略不存在的文件,从不给出提示
-i 交互模式删除文件,删除文件前给出提示
-r 递归的删除目录下面文件以及子目录下文件
9.sort
sort 将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
-r 以相反的顺序来排序。
-f 排序时,忽略大小写字母。
-b 忽略每行前面开始出的空格字符。
10.uniq
uniq 命令删除文件中的重复行。
注:uniq只除去相邻的重复的行,可以使用 sort 命令使所有重复行相邻,然后可以真正的去除所有重复的行
-c 在输出行前面加上每行在输入文件中出现的次数。
-d 仅显示重复行。
-u 仅显示不重复的行。
11.查询某一段时间的日志
awk -F ']' '($1 >= "2017-03-12 01:50:11" && $1 <= "2017-03-12 01:50:13"){print $1}'
12.堆和栈的区别
一、堆栈空间分配区别:
1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
二、堆栈缓存方式区别:
1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
2、堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
三、堆栈数据结构区别:
堆(数据结构):堆可以被看成是一棵树,如:堆排序;
栈(数据结构):一种先进后出的数据结构。
13.Linux进程结构
可由三部分组成:代码段、数据段、堆栈段。也就是程序、数据、进程控制块PCB(Process Control Block)组成。进程控制块是进程存在的惟一标识,系统通过PCB的存在而感知进程的存在。
代码段存放程序的可执行代码。数据段存放程序的全局变量、常量、静态变量。堆栈段中的堆用于存放动态分配的内存变量,堆栈段中的栈用于函数调用,它存放着函数的参数、函数内部定义的局部变量。
14.IO模型
常见的IO模型有四种:
(1)同步阻塞IO(Blocking IO):即传统的IO模型。
(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。
(3)IO多路复用(IO Multiplexing):即经典的Reactor设计模式,有时也称为异步阻塞IO,Java中的Selector和Linux中的epoll都是这种模型。
(4)异步IO(Asynchronous IO):即经典的Proactor设计模式,也称为异步非阻塞IO。
同步和异步的概念描述的是用户线程与内核的交互方式:同步是指用户线程发起IO请求后需要等待或者轮询内核IO操作完成后才能继续执行;而异步是指用户线程发起IO请求后仍继续执行,当内核IO操作完成后会通知用户线程,或者调用用户线程注册的回调函数。
阻塞和非阻塞的概念描述的是用户线程调用内核IO操作的方式:阻塞是指IO操作需要彻底完成后才返回到用户空间;而非阻塞是指IO操作被调用后立即返回给用户一个状态值,无需等到IO操作彻底完成。
15.find
在目录结构中搜索文件,并执行指定的操作。
find pathname -options [-exec]
-name 按照文件名查找文件。
-mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。 例: php {} \;
16.文件属性
l是链接 d是目录 c是字符设备文件 b是块设备 -是文件
17.socket
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。
18.tar
压缩操作:
# tar -cvf /usr/local/auto_bak/test.tar /usr/local/test 仅打包,不压缩
# tar -zcvf /usr/local/auto_bak/test.tar.gz /usr/local/test 打包后,以gzip压缩
解压操作:
#tar -zxvf /usr/local/test.tar.gz
19.软连接
软连接: ln -s 源文件 目标文件
20.shell操作光标
ctrl + a 移动光标到行首
crtl + e 移动光标到行尾
ctrl + u 删除光标左边的内容
20.全局查找
查找某个目录所有文件里是否含有某个字符串:
(1)进入要查询的目录
(2)grep -rn "hello world" *
21.快捷键
复制:ctrl+insert
粘贴:shift+insert
22.dstat
实时地看到所有系统资源使用情况
CPU状态:CPU的使用率,这项报告更有趣的部分是显示了用户,系统和空闲部分
磁盘统计:磁盘的读写操作,这一栏显示磁盘的读、写总数。
网络统计:网络设备发送和接受的数据,这一栏显示的网络收、发数据总数。
分页统计:系统的分页活动
系统统计:这一项显示的是中断(int)和上下文切换(csw)
23.历史命令
history 记录执行过的命令
ctrl+r 反向查询历史命令