用户及进程管理是多任务多用户中经常遇到的问题
本节课的内容分为用户的管理,包括用户的切换、创建、删除、密码修改和用户信息的修改等
文件权限的操作以及进程的管理等
PPT课件下载4-Linux进程管理.rar
用户及进程管理是多任务多用户中经常遇到的问题
本节课的内容分为用户的管理,包括用户的切换、创建、删除、密码修改和用户信息的修改等
文件权限的操作以及进程的管理等
PPT课件下载4-Linux进程管理.rar
此为不完整版,是没有图片解释的,带图片的请下载PDF格式文档
【写在读之前】
1、黑色加粗的为命令,不可拼读错误;
2、-->是解释箭头;
3、所有括号内的内容为补充说明或单词补全,可不输入;
4、所有标记红色“例”为有图示的例子;
5、颜色一样、连在一起的且中间有空格的几个单词,是一个命令或一个完整说明;
6、其它颜色为可以区分设置,没有特殊含义;
7、实际命令的空格间隔很小,为了加以区别以便让人更清楚地区分,空格一般输入不止一个;
8、暂时不理解的名词可讨论或网络搜索;
9、由于水平有限,难免出错或过于繁琐,今后会逐步完善,望指正~
第四课用户及进程管理
一、用户管理
1、配置文件
/etc/passwd-->保存用户信息
例:查看用户信息,cat/etc/passwd
shangziyun:x:500:500::/home/shangziyun:/bin/bash
用户名:密码:uid:gid:用户描述:用户主目录:用户的登陆shell
/etc/shadow-->保存密码信息(MD5加密)
/etc/group-->保存组的信息
2、如何查看用户身份
who-->查看当前哪些用户在线
whoami-->查看自己是谁,查看的是euid(有效用户id)
who am i-->查看自己是谁,查看的是uid(用户真实id)
id-->查看自己的uid,gid
3、如何切换用户(慎用,不懂的命令不要敲)
su-->切换到root用户,和su root相同
su root-->切换到root用户,仍然使用切换前的用户环境配置
su - root-->切换到root用户,并且使用root用户的环境配置
4、如何添加用户(即在/etc/passwd、/etc/shadow、/etc/group文件中添加一条记录)
useradd-->实际添加的路径为/usr/sbin/useradd
例:useraddTony
没有添加前
添加后,多了一个用户Tony
5、如何改密码(即修改/etc/shadow文件的内容)
passwd修改当前用户的密码
passwd Tony修改Tony用户的密码
例:修改Tony的密码(密码是不回显的作者设置为111,提示太短,但还是继续输入第二次)
6、如何删除用户(即在/etc/passwd、/etc/shadow、/etc/group中删除一条记录)
userdel
userdel -r-->删除用户的同时,删除主目录
例:删除用户Tony(root用户才能操作)
删除前
删除后
7、修改用户信息(修改/etc/passwd、/etc/group中的某条记录的内容)
usermod
8、组的操作(用法与用户的操作相似):
添加组:groupadd
修改组:groupmod
删除组:groupdel
9、修改文件的属主和属组
chown sramedu:sramedu test1-->将test1的所有者修改为sramedu,并且将属组修改为sramedu
chown -R sramedu:sramedu code-->将code目录及内容的属主修改为sramedu,属组修改为sramedu
//chgrp(不做介绍,自己查阅相关资料)
二、文件的权限操作
1、如何查看文件的权限
ls –l
rwxrx-r---->权限类型
2、权限的分类
r-->可读
w-->可写
x-->可执行
3、权限的分组
u(属主)
g(属组)
o(其他)
4、如何修改权限
chmod
方式一:u,g,o,a+,-,=
chmod u+x,g-x,o+r filename
chmod a+x filename
chmod u=rwx filename
例:添加或减少权限,前后对比
方式二:八进制方式
chmod 777 filename
chmod 644 filename
111111111
rwxrwxrwx
000000000
例:将上次修改过的权限再改回来(当前权限为567,原权限为775)
三、进程管理
1、什么是进程
简言之就是进行中的程序
2、如何查看进程
1)ps指令
ps-->查看当前用户当前终端下的进程
ps u-->查看当前用户所有终端下的进程
ps au-->查看所有用户所有终端下的进程
ps aux-->查看所有用户所有进程(包括没有控制终端的进程)
2)pstree
以树桩结构显示进程
init是所有进程的父进程
3)top
类似于winodws的任务管理器
例:我们在终端下运行作者编写的小程序(每间隔3秒在终端上显示test!)
程序如下:
#include
int main(void)
{
for(;;)
{
printf("test!\n");
sleep(3);
}
return 0;
}
经gcc编译生成a.out的可执行文件
步骤为:
a.在某一文件夹下建立一个test.c文件并用vi编辑器打开
b.编写上述程序,保存并退出
c.运行gcc将test.c文件编译(通过作者的方法安装的redhat都具有gcc编译器),执行
gcctest.c,生成a.out可执行文件
d.直接运行该可执行文件(a.out),命令:./a.out(之后每隔3秒,终端上显示test!),使用ctrl^c可终止程序,ctrl^z挂起程序
e.后台再打开一个终端,利用查看进程指令查看进程,如:ps u
可看到进程a.out
3、如何杀死进程
kill-->进程id(PID),如:进程a.out的id为11769
kill -9-->进程id==>保证杀死任何指定的进程
pkillpname-->用进程名杀死进程
例:将进程a.out杀死
利用id杀死进程
利用进程名杀死进程
4、进程的前后台切换
1)如何让一个进程后台运行
./a.out &
即使在后台运行,输出也会输出到当前终端
2)如何查看后台运行的进程
jobs(可以看到作业号)
3)如何将一个后台进程切换到前台执行
fg%作业号
4)如何将一个前台进程切换到后台执行步骤:
a.ctrl^z-->挂起(暂停)
b.jobs-->查看作业号
c.bg%作业号
5、计划任务
crontab -e调用VIM编辑器编写计划任务
crontab -l查看当前用户的计划任务
crontab -r删除计划任务
编写计划任务的格式:
分钟小时天月星期shell指令/shell脚本/可执行文件
每个时间域可以使用*代表通配
每个时间域可以使用-,比如“星期域”的1-5代表周1-周5
每个时间域可以使用','比如“星期域”的1,5代表周1和周5;1-2,4-5周1周2,周4周5
每个时间域可以使用*/n代表每n个单位.分钟域的*/2代表每两分钟
例:使用crontab指令设置服务器周1-周5每天晚上11:00关机(注:关机指令为powoff)
格式为:
023**1-5powoff