第二节 深入Linux操作指令
1.深入指令认识
①runlevel 查看系统运行级别
可以用init动态切换0-6共7个级别(特别注意:如在使用这个指令时退不出来可执行上节的重新启动shutdown -r now)
|
0 |
关机->停止所有服务、断电 |
|
1 |
单用户模式->用于系统修复/重置密码 |
|
2 |
多用户无网络服务->部分发行版默认 |
|
3 |
完全的多用户文本界面->服务器常用默认 |
|
4 |
未定义或者自定义->保留给用户/发行版定制 |
|
5 |
图形化界面->桌面版常用默认 |
|
6 |
重启->重启系统 |
②显示文件内容的指令
****more 当文件的内容超过一个屏幕能显示的行数,使用more 可以分屏显示文件内容,分页显示 慢慢显示出来,more +文件名字。
****less指文件内容查看器,查看文件内容,但是文件内容不会显示在界面上,less +文件名字(注意:使用less查看文件时,可以q退出)。
****head:显示文件前n行的内容,head -n(行数) 文件名。
****tail 显示文件后n行的内容,tail+-n+文件名:表示查看该文件后n行的内容。

③打包tar
(c:创建新的打包文件 x:从打包文件中提取解压文件,释放包中的内容 t:列出打包文件内的文件列表,不解压 v:显示详细操作过程 f:指定打包/解压的文件名而不是设备 r:向已存在的打包文件里面追加新文件 z: 有解压和压缩的功能)
***tar -cvf+包名.tar+需要打包的文件名:将文件打包到包名中,不压缩
***tar -tvf 包名.tar :查看打包内容
***tar+-xvf+包名.tar -C+目标地址:将包中内容解包到目标地址
***tar+-rvf+包名.tar+文件名:将文件追加到打包tar文件里去
***tar+-zcvf+包名.tar+文件名:将文件打包到包中,并且压缩
***tar+-zxvf+包名.tar+文件名:解包 将包中内容解包到目标地址

④补充一下命令操作
vi命令模式切换到末行模式:
|
shift +: |
对文本的设置或者保存工作 |
|
/+字符 |
对文件进行全文向下搜索字符串string |
|
?+字符 |
对文本进行全文向上搜索字符串string |
|
:q! |
强制退出 |
|
:w newfile |
另存为新文件 |
|
:set hlsearch |
设置高亮搜索 |
|
:set nohlsearch |
取消设置高亮搜索 |
|
:n,m s/oldstring/newstring |
替换整个文本每行的第一个oldstring |
|
:n,m s/oldstring/newstring g |
替换整个文本所有oldstring |
vi常用命令补充:
|
r |
替换一个字符 |
|
shift +6 |
光标移动到当前行的行头 |
|
shift +4 |
光标移动到当前行的行尾 |
|
shift+g |
光标移动到整个文本的最后一行 |
|
gg |
光标移动到整个文本的第一行 |
|
n shift +g |
光标移动到第n行 |
|
d n shift+g |
删除光标到n行的内容 |
|
y n shift +g |
拷贝光标到n行的内容2. |
2.进程管理命令
①ps :打印当前终端中的进程/正在运行的程序
//-e 显示系统中所有的进程信息
//-f 显示更多的进程属性信息(全格式)
//-L 显示进程中的线程ID
//ps -ef:打印当前系统中的进程的详细信息



//注:PID:当前的进程号 CMD:当前进程名称 UID:运行进程的用户名 PPID:当前进程的父进程,由bash过来的
bash:命令解释器 开一个终端相当于开一个命令解释器,不断累加的
TTY:表示终端号,第一个终端的终端号位0,以后为 1 2 3 4……
*****额外解释:
此操作系统:uabntu 来管理进程
生成进程:给进程分配pid号 int 0到无穷(有上限)
进程控制块:struct task_struct; 一个连一个
进程描述符:进程号一定是连续的,如果两个进程号之间的不连续,说明中间的已经被释放。
父进程和子进程是相对的,并不是绝对的。
②pstree 以树状图形式显示进程之间的关系
③休眠的指令(sleep)+数字 :表示休眠多少秒,Ctrl+c:结束在终端中在前台运行的进程。(如果ctrl +z停止再 ps -ef,则可看到)

// sleep 300 运行在前台(默认在前台,终端会等待当前进程结束)
sleep 300 & 运行在后台(&后台运行程序,显示当前进程号,需要动手结束(kill +进程号))
④kill+进程号:结束(杀死)进程 无论前台还是后台,但是当进程处于暂停(ctrl z 停止)状态时,必须加上-9 强制结束(kill +-9 +进程号),-stop:挂起进程(kill +-stop+进程号)
(查找进程号:ps -ef l grep+名字)

pkill:结束一组同名的进程
jobs:显示当前终端的任务

⑤fg:任务号,将后台运行的或挂起的进程挪到前台执行
bg:任务号,将挂起的进程唤醒到后台执行
(操作:放置一个后台长时间运行的指令(一个死循环的代码),查看他的状态并将其切换到前台运行)
//注意:运行在后台的进程,在命令输入指令时,无论后台的任务显示如何,都可以算正在输入的指令
拓展: while true; do date; done & sleep 2是循环打印时间(这个时间会一直打印,(不要轻易尝试,)但是如果尝试之后,则重新打开一个终端,在终端中查询进程号,执行kill +进程号,上一个终端停止)
![]()


⑥添加新用户和和删除用户
//添加新用户:useradd newname (用户名字)
| -g | 执行新用户的主组 |
| -G | 将新用户添加到副组 |
| -s | 指定新用户默认使用的shell终端 |
| -d | 指定新用户登录默认进入的目录 |
//删除用户:userdel name (userdel删除用户时,首先确保该用户没有登录,userdel默认仅删除用户,不会删除家目录及家目录中的文件,若想删除用户的同时移除家目录那么就得使用userdel -r username)
3.在Linux系统上的c语言的编译与调试(gcc使用)
①gcc:编译程序的核心工具链,翻译成可读的机器语言【gcc +文件名(目录名)+ (-o)+ (命名)】gcc编译器,在Linux系统上可执行文件(程序)的格式为ELF;在Windows系统上可执行程序的格式为PE,如图:

②汇编语言:一种低级的编程语言,(直接对应机器语言(二进制指令)),但是使用了一些助记符来帮助人类记忆。特点:1.与硬件强关联 不同CPU架构(X86 ARM)下 汇编指令集差异。2.可以直接操作硬件(可以直接访问寄存器,内存器,CUP标志位)
③编译链接过程:gcc编译器 分步编译程序(*.i 预处理文件 *.s汇编文件 *.o二进制文件)
预编译阶段:gcc -E main.c -o main.i
编译阶段:gcc -s main.i -o main.s
汇编阶段:gcc -c main.s -o mian.o
链接阶段:gcc main.o -o main
④多文件的编译过程:(给出例子,如下图片)
首先创建 add.h add.c max.h max.h mian.c等写进可执行代码
//在生成可执行文件时只要将目标文件的汇编文件进行gcc编译,即可执行编译,变成二进制文件



//出现二进制文件add.o max.o main.o

⑤makefile和make(实现自动化编译) (对 main.c add.c max.c三个文件进行编译,先建立makefile文件,在文件中写入下图内容(注意格式问题,gcc前有空格,按tab键就行)

//文件建立之后,在命令行下make,则可直接生成*.o文件

//执行clean 清楚*.o的文件 执行make clean
//makefile文件如果加了除开生成的指令,想执行该指令,现需要在外部输入,make+该指令的标志位
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)