进程管理
程序放在磁盘上叫文件,把它复制到内存,并在cpu运行,就叫进程,
进程多少也反映当前运行程序的多少
进程在系统中会为每个进程生成一个进程号,在所有的进程中有一个特殊进程即init进程,
它是所有进程的祖先,进程号是1。这个进程是不能中止的。
进程与 /proc 目录关系密切
/proc 是一个实时的、常驻内存的虚拟文件系统。它反映的是当前内核运行的状态有时还能通过设置 /proc 中某些文件的状态来临时修改系统设置的目的
例:echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all -----禁ping
进程状态
r 运行状态
s 睡眠状态
d 不可中断的睡眠状态
t 暂停或跟踪状态
z 僵尸进程(退出了,但资源还未释放掉)
常用进程管理的命令
1、ps 查看进程状态
ps -ef
ps aux
s 它有子进程
l 多线程
+ 位于后台进程组
< 高优先级
N 低优先级
2、pstree 查看进程
3、top 实时查看进程
实时查看时:
按 P 根据cpu使用率排序
按 M 根据内存使用情况排序
k 杀进程
q 退出
u 显示指定用户的进程
shift + >
shift + < 翻页看
4、kill 杀进程
5、killall 以服务名或进程名的方式杀进程
有时同一个服务或程序会生成很多的进程,通过进程号来杀,会比较麻烦,这时可以用killall
6、pkill 以服务名或进程名的方式杀进程 (和killall 类似,但不要全名)
例:killall http --杀不掉,因为killall 要全名的
7、nice 以指定的优先级去运行一个程序
格式:nice [-n num] command
num:
-20~19 值越低优先级越高,默认为0
例: nice -n -20 /usr/bin/vmware
8、renice 修改一个正在运行的程序优先级
格式; renice [num] PID
例:
修改x0vncserver 的优先级
renice -20 17237
作业控制:
9、 & 后台运行符
10、jobs 查看后台运行的命令
11、bg 启动后台停止的进程
格式:bg 后台程序编号
如: bg %1
12、杀后台进程
kill %1
13、将前台程序放到后台运行
如: cp /soft/rhel62.iso / --之后按ctrl +z ,程序就到后台
14、 fg 将后程序调到前台运行
fg %1
15、 ctll + z 将前台程序放到后台(会停止运行)
文件查找与压缩
文件查找:
which 显示可执行命令的路径(告诉你命令在哪)
例:which cp which fdisk
能不能找到取决于两个方面:
1)有没有这个命令(文件)
2)PATH 变量
which 不会在磁盘上搜有没有这个文件,它只在 PATH 变量指定的路径中去搜索,如果没指定那个目录,即便有也找不到
whereis
同 which 类似,locate 查找速度非常快,因为从系统数据库中找,没在磁盘上搜索,但是会存在一个问题,如果系统数据库未更新,那即便文件存在,也找不到
解决办法是更新系统数据库
locate qq
touch aaa.txt
locate aaa.txt --这里找不到aaa.txt 了
updatedb
locate aaa.txt --更新数据库后就找到了
find 文件查找
格式: find 路径 [选项]
-name 按文件名找
-type 按类型找
b 块设备
c 字符设备
d 目录
l 链接
f 普通文件
-uid 按用户id找
-user 按用户名找
-gid 按组id 找
-group 按组名找
-size 按大小找
+nK|M|G
-nK|M|G
-mtime 按修改时间找(单位:天)
+n 大于n 天(n天以前)
-n 小于n 天(n天以内)
-mmin amin cmin 按修改时间、访问时间、修改时间找(单位:分钟)
mtime 文件修改时间(侧重于内容,mtime 的修改会引起ctime、atime的修改)
atime 文件访问时间(如查看)
ctime 文件修改时间(侧重于属性修改,如权限,名字等)
查看文件 stat
-nouser 查找无效属主的文件
-group 查找无效组
-exec 对查找的结果执行命令,查找结果作为命令输入参数
格式:find .... -exec command {} \;
-ok 与 -exec 作用类似,但是执行命令时,有确认信息
xargs 也可以做类似的事情,不过xargs 就要使用管道了,将查询结果传给xargs (注意的是xargs 不是find 的选项)
用法: command1 | xargs -I {} command2 {}
-I 用一个符号来替代前一个命令传过来的每个具体结果
command2 {} 对前面传过来的结果执行命令
例:找 fdisk find / -name fdisk
例:只找aaa的目录 find / -type d -name aaa
例:找tom 创建的所有文件 find / -user tom
例:找1G以上的文件 find / -size +1G
例:找无效属主的文件,并将这些文件删除 find / -nouser -exec rm {} \;
例:删除tom创建的文件 find / -user tom -type f -ok rm {} \;
例:用xargs 的方式把 tom 创建的普通文件,复制到 /test
格式:command1 | xargs -I {} command2 {}
find / -user tom -type f | xargs -I {} cp {} /test
文件压缩与打包
windows 下常见的压缩格式: .zip .rar
linux 下常见的缩格式: .gz .bz2 .tar.gz .tar.bz2
gzip
压缩:gzip etc.tar
解压:gzip -d etc.tar.gz
bzip2
压缩:bzip etc.tar
解压:bzip -d etc.tar.bz2
.zip 文件拷到linux来解压方法:
unzip 压缩文件名
.rar 文件拷到linux来解压方法:
要装rar的linux 版,rar 命令行的使用
rar 压缩:rar a etc.tar.rar etc.tar
rar 解压:rar e etc.tar.rar
tar 打包/解包
格式: tar [option] [文件目录列表]
option:
-c 打包
-x 解包
-v 显示打包解包过程
-f 指定打包解包文件
-j 用bzip2 来进行压缩与解压
-z 用gzip 来进行压缩与解压
-C 指定解压路径
-t 查看包内容
例:把 /etc 打包成一个文件
tar -cvf etc.tar /etc
例:把 etc.tar.bz2 解包
tar -xvjf etc.tar.bz2
例:查看包的内容
tar -tvf etc.tar.bz2
NFS (Network File System) 网络文件系统的简称,最早由sun公司开发,主要用于类unix间的文件共享。
服务器软件安装:
yum install nfs*
涉及的服务:
nfs
rpcbind
配置文件:
/etc/exports
配置格式: 共享的目录 能访问客户端(访问参数) 能访问客户端2(访问参数2)
能访问的客户端:
172.16.1.116 单一IP
172.16.1.* IP段
172.16.1.0/24 IP段
www.uplooking.com 主机名
*.uplooking.com 域名
* 所有机器
访问参数:
ro 只读
rw 读写
sync 实时同步数据到磁盘
async 异步
anonuid=xxx 指定匿名帐号的uid
anongid=xxx 指定匿名帐号的gid
secure 限制客户端只能从小于1024的端口连接到nfs 服务器
insecure 可以从大于1024端口连接到nfs 服务器
NFS端口:
111 rpcbind (原来portmap)端口,另外还有一些随机端口,由rpcbind 来映射
exportfs 手工维护共享目录
格式: exportfs [option] [dir_name]
option:
-v 显示共享
-a 共享 /etc/exports 定义的目录(启用共享)
-u 停止共享
-r 重新读取配置文件(相当于重新加载配置文件)
相当于 service nfs reload
例:通过exportfs 共享 /test 目录
exportfs *:/test
例: 配一个nfs 服务器,让客户端只读访问
服务器端:
vim /etc/exports
/share *(ro)
service nfs restart
mkdir /share
cp ...... /share
客户端:
1) 查看服务器共享了哪些资源
showmount -e ip
如:showmount -e 172.16.1.116
2) 挂载服务器的共享到本地目录
mount ip:共享目录 本地挂载点
如:mount 172.16.1.116:/soft /mnt
3) 访问了
把服务器的共享目录挂载到本地后,访问挂载点就是访问服务器的共享目录了
cd /mnt
ls
服务管理
启动服务
service 服务名 start
停止服务
service 服务名 stop
重启服务
service 服务名 restart
查看服务状态
service 服务名 status
如何让服务自动启动:
1) vim /etc/rc.d/rc.local
把启动服务的命令写进去(不常用)
2) chkconfig --level 2345 服务名 on
检查:chkconfig --list | grep 服务名
2345 是运行级别
例: chkconfig --level 2345 nfs on
chkconfig --list | grep nfs