用户及进程管理是多任务多用户中经常遇到的问题
本节课的内容分为用户的管理,包括用户的切换、创建、删除、密码修改和用户信息的修改等
文件权限的操作以及进程的管理等
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
例:useradd Tony
没有添加前
添加后,多了一个用户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
111 111 111
rwx rwx rwx
000 000 000
例:将上次修改过的权限再改回来(当前权限为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编译器),执行
gcc test.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 ==> 保证杀死任何指定的进程
pkill pname --> 用进程名杀死进程
例:将进程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)
格式为:
0 23 * * 1-5 powoff
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |