栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux学习笔记

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux学习笔记

grep,sed,awk三姐妹
主要用于文本处理,重点是正则式+三姐妹的语法。
其中:
awk 可以对行和列进行处理,提取出指定的行列并进行计算。
sed 可以对指定的行进行增删改查,进行文本修改。
grep 进行文本筛选。
具体语法可以参考《跟着老男孩学三剑客》。
shell常用命令
  1. mv和cp
移动一个文件或者重命名一个文件:mv
拷贝一个文件:cp
  1. linux中默认的shell是bash

  2. 查看上一个命令的返回结果使用的全局变量:?(使用方法:$?)

  3. 重定向

>:输出重定向(覆盖)
>>:输出重定向(追加)
2>&1:将标准错误重定向到标准输出
>|:禁用>重定向后需要强制重定向的符号
  1. PS1环境变量:shell终端的提示符
  2. rm -rf:将一个非空的目录删掉
  3. 将一个变量导出成环境变量:export
vim操作
将光标移到下一个单词的开始:w
删除当前光标所在的单词:dw
在尾行模式下保存退出的命令:(:wq)
GCC,make编译,GDB调试
  1. gcc的使用
源代码生成汇编代码:gcc -S
源代码转换成二进制模块:gcc -c
看预处理的结果:gcc -E
添加调试信息:gcc -g
  1. make与Makefile
make的常用选项:
CXXFLAGS:C++编译器选项
CPPFLAGS:编译预处理选项
CXX:C++编译器名称
LDFLAGS:链接选项
Makefile的写法:
目标:依赖项列表
(Tab缩进)命令
例子:
CFLAGS=-g
LDFLAGS=-L/usr/lib/gsl -lgsl
all:SB
SB:1SB.o 2SB.o 3SB.o 4SB.o 5SB.o … … 100SB.o
	gcc –o SB $(LDFLAGS) 1SB.o 2SB.o … … 100SB.o
1SB.o:1SB.c
	gcc –c $(CFLAGS) 1SB.c
...
100SB.o:100SB.c
	gcc –c $(CFLAGS) 100SB.c
系统配置相关 静态函数库与动态函数库
  1. ln创建的软链接与硬链接,函数库的链接
【硬连接】
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。
创建命令:ln 
【软连接】
软链接文件有类似于Windows的快捷方式。包含的有另一
文件的位置信息。
创建命令:ln -s [源文件] [软链接文件]
静态函数库和动态函数库的区别:
静态库的二进制代码和.o文件链接后放
在最后的可执行文件中,一起被载入内
存,为此进程独享。
动态链接库和.o文件链接后,其代码并
不进入最后的可执行文件中,需要时载
入内存中,可被多个进程共享。

创建静态函数库的步骤:
将相对独立的功能形成函数,写入若干.c源文件中。
将.c源文件编译成.o文件(gcc -c) 将.o文件打包成libfilename.a文件。
创建动态函数库的步骤:
将相对独立的功能形成函数,写入若干.c源文件中。
gcc –fPIC –c 将.c源文件编译成.o文件。
gcc –shared 将.o文件生成libfilename.so文件。
文件系统与磁盘分区
  1. 挂载
挂载的命令:mount
卸载一个已经挂载的命令:umount
将/etc/fstab中的挂载信息全部挂载:mount -a
对一个磁盘进行使用的步骤:
1.创建磁盘分区:fdisk /dev/sdb
2.创建文件系统:mkfs [文件系统] [/dev/sdb1]
3.挂载:mount [/dev/sdb1] [目标目录]

开机自动挂载:/etc/fstab

主分区+扩展分区 最多只能有4个
扩展分区可以是0个,最多是1个
扩展分区不能直接使用,扩展分区必须首先创建成逻辑分区才能使用
逻辑分区可以是0个 1个 多个

问题:第二块磁盘的第二个逻辑分区?
/dev/sdb6
问题:第二块磁盘的第二个主分区?
/dev/sdb2

并口硬盘:hda
串口硬盘:sda
Linux文件管理
  1. linux文件类型
  2. 文件权限
普通文件的权限:
r 可以读取文件内容
w 可以修改文件内容
x 可以在shell下运行文件

目录文件的权限:
r 可以ls目录的内容
w 可以在目录中新建或删除文件
x 可以cd进入到这个目录

新建普通文件的初始权限是(umask的值为022)(要求会计算):
666&~umask
新建目录的初始权限是:
777&~umask

执行一个脚本文件,不需要w的权限,需要r,x权限。
可以使用source执行这个脚本文件,可以用.代替。
标准IO库与系统调用的区别
  1. stdout的默认缓冲类型
stdout默认缓冲类型:行缓冲
stdin默认缓冲类型:行缓冲
stderr默认缓冲类型:无缓冲
普通文件默认缓冲(fopen):全缓冲
进程的组织
在linux中生成一个新的进程,新的进程和父进程具有相同的代码段用的命令:fork
为进程安装新的信号处理函数,所调用的函数:signal
获得一个文件的信息:stat
获得一个文件系统的信息:statfs
ps a:显示现行终端机下的所有程序,包括其他用户的程序。
ps u:以用户为主的格式来显示程序状况。
ps x:显示所有程序,不以终端机来区分。

优先级数值=优先级别(PR)+谦让值(NI)
优先级数值越大,优先级越小,其中优先级别不可更改。
改变一个已经启动的进程的优先级:nice(将进程的谦让值改大),renice(将进程的谦让值改小)

僵尸进程的生成原因:
一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程。
但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程。
因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,
看看有没有哪个进程是刚刚结束的这个进程的子进程,
如果是的话,就由Init进程来接管他,成为他的父进程,
从而保证每个进程都会有一个父进程。
而Init进程会自动 wait其子进程,因此被Init接管的所有进程都不会变成僵尸进程。

僵尸进程的危害:
如果进程不调用 wait / waitpid 的话, 那么保留的那段信息就不会释放,
其进程号就会一直被占用,但是系统所能使用的进程号是有限的,
如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程。

僵尸进程的应对方式:
用signal注册信号处理函数,在信号处理函数调用wait/waitpid等待子进程退出。

孤儿进程的生成原因:
子进程运行,父进程退出,孤儿进程由 init 进程收养,此时子进程就变成了孤儿进程。

孤儿进程的应对方式:
每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为 init ,而 init 进程会循环地 wait() 它的已经退出的子进程。
信号
SIGKILL,SIGSTOP两个信号不能被忽略
给一个进程发信号:
kill [-s sigspec | -n signum | -sigspec] pid
-s sig    信号名称。
-n sig    信号名称对应的数字。
-l        列出信号名称。如果在该选项后提供了数字那么假设它是信号名称对应的数字。
-L        等价于-l选项。
默认发送的是SIGTERM信号
管道和消息队列
  1. 管道和重定向
前一个进程的输出作为后一个进程的输入,用的是管道(|)。
涉及到文件的是重定向。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/334240.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号