Linux/C高级(精讲)----进程、文件、shell
进程管理命令:
grep:
功能:从文件中查找字符串
格式:grep "要查找的字符串" 文件名
精确查找:grep "\<要查找的字符串\>" 文件名
结合ps以及管道:
ps -aux | grep 要查找的字符串:从进程中查找相对对应的字符串
find命令:
find 路径 -name 文件名 : 查找指定路径下的文件
要查找多个文件可以加""
给进程发送信号命令kill
从本质上讲,kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。
kill -i :查看系统中定义的信号
2:SIGINT 快捷方式:ctrl+c 结束进程
3:SIGQUIT 快捷方式:ctrl+\ 结束进程
9:SIGKILL 杀死进程
15:SIGTERM 结束进程 kill发信号时不加编号,默认信号为15号
18: SIGCONT 让暂停进程继续
20:SIGTSTP 暂停信号 快捷方式:ctrl+z 暂停信号
kill -num PID : 给指定进程发送信号
num:信号编号
PID:进程号,可以通过ps或者top命令查看
前后台进程切换
步骤:先运行进程
ctrl z:将进程暂停
bg 编号:切换到后台
jobs :在当前终端查看后台进程
fg 编号:将后台进程切换到前台
网络管理:
ifconfig:查看linux的ip地址
ipconfig:查看windows的ip地址
ping 域名/ip地址:检查网络的连通性(是否能通信)
文件系统管理
用于组织和管理计算机存储设备上的大量文件,并提供用户交互接口
文件系统分类
磁盘文件系统:指本地主机中实际可以访问到的文件系统,包括硬盘、CD-ROM、DVD、USB存储器、磁盘阵列等。常见文件系统格式有:Ext2、Ext3、Ext4、VFAT等
网络文件系统:是可以远程访问的文件系统,这种文件系统在服务器端仍是本地的磁盘文件系统,客户机通过网络远程访问数据。常见文件系统格式有:NFS(Network File System,网络文件系统)、Samba(SMB/CIFS)等
专有/虚拟文件系统:不驻留在磁盘上的文件系统。常见格式有:TMPFS(临时文件系统)、PROCFS(Process File System,进程文件系统)和LOOPBACKFS(Loopback File System,回送文件系统)。
根文件系统结构
需要了解常见的目录含义:
/bin:存放系统中最常用的可执行文件(二进制)
/sbin : 存放更多的可执行文件(二进制),包括系统管理、目录查询等关键命令文件
/boot:存放Linux内核和系统启动文件,包括Grub、lilo启动器程序
/opt: 与系统无关的安装程序
/etc: 放的一些配置文件。Linux开机自启动脚本存放在/etc/rc.d或/etc/init.d目录下。这些目录是Linux系统中用于存放启动脚本的标准目录
/dev : 存放所有设备文件,包括硬盘、分区、键盘、鼠标、USB、tty等
/lib : 存放共享的库文件,包含许多被/bin和/sbin中程序使用的库文件
/mnt : 该目录通常用于作为被挂载的文件系统的挂载点
/proc : 存放所有标志为文件的进程,它们是通过进程号或其他的系统动态信息进行标识,例如cpuinfo文件存放CPU当前工作状态的数据
/usr : 用于存放与系统用户直接有关的文件和目录,例如应用程序及支持它们的库文件。以下罗列了/usr中部分重要的目录。
/usr/lib: 库文件,系统默认搜索的库路径
/usr/include: 头文件,系统默认搜索的头文件路径
Linux开机自启动脚本存放在/etc/rc.d或/etc/init.d目录下。这些目录是Linux系统中用于存放启动脚本的标准目录
显示文件内容
cat 文件名 : 显示文件全部内容
head:
head -n 文件名:显示前n行
tail:
tail -n 文件名:显示后n行
链接文件
- 文件类型: 7种 b c d - l s p
硬链接:是利用Linux中为每个文件分配的物理编号——inode号建立链接。 因此,硬链接不能跨越文件系统。
软链接(符号链接):是利用文件的路径名建立链接。通常建立软链接使用绝对路径而不是相对路径,以最大限度增加可移植性;类似windows下的快捷方式
- 命令
硬链接:ln源文件 链接文件名
软连接:ln-s源文件 链接文件名
- 注意
硬链接:删除或移动目标文件链接依然有效
只能操作普通文件
软链接:删除或移动目标文件链接失效,但是在此创建时链接依然有效
建立软链接使用绝对路径而不是相对路径,以最大限度增加可移植性
文件压缩和解压
- zip命令用于将一个文件或多个文件压缩成单一的压缩文件
unzip命令用于将zip压缩的文件进行解压
注意:
1)具有归档功能,并进行压缩
2)可以压缩文件夹,后缀为.zip
3)压缩或者解压后源文件依然存在
格式:
zip压缩文件名.zip要压缩的文件列表
unzip文件文件名.zip
- (2) gzip命令将一个文件进行压缩
gunzip命令将gzip压缩的文件进行解压
注意:
1)只能对一个文件进行压缩,并自动后缀为.gz
2)没有归档功能
3)压缩或解压后源文件不存在
格式:
gzip要压缩的文件
gunzip压缩文件.gz
- bzip2:功能、特点与gzip相同,只是后缀为.bz2
bunzip2:解压
- tar
选项:
-x : 释放归档文件,解压
-c : 创建一个新的归档文件,压缩
-v : 显示归档和释放的过程信息
-f : 用户指定归档文件的文件名,否则使用默认名称
-j : 由tar生成归档,然后由bzip2压缩 .tar.bz2
-z : 由tar生成归档,然后由gzip压缩 .tar.gz
注意:
1)具有归档功能,并通过选项可以进行压缩或解压
2)压缩或解压后源文件存在
3)需要写全压缩或解压的文件名格式:
格式:
tar 选项 压缩(解压)文件名要压缩的文件列表
组合:
-cjf: 以bz2格式压缩文件
-czf: 以gz格式压缩文件
-xvf: 解压一个压缩包,解压后压缩包依然存在
Shell脚本
shell脚本基础概念
概念:
shell使用方式:手动在命令行下命令和用shell脚本
shell脚本本质:shell命令的有序集合,扩展名可以为sh见名知意,也可以没有。
shell 既是应用程序,又是一种脚本语言(应用程序 解析 脚本语言)。
解释型语句:不需要编译,解释一条执行一条,python、shell脚本。
编译型语句:需要用编译器gcc,g++来进行编译,比如C语言
创建和执行
新建一个shell脚本:touch xx.sh
第一行必须为:#!/bin/bash
意思是使用/bin/bash来解释执行
执行方式:
1. 使脚本具有执行权限: chmod权限xx.sh
2. 执行: ./xx.sh
练习:
1)在当前路径下创建file_1到file_5, 5个普通文件
2)删除 file_2和file_3文件(使用通配符)
3)将剩下的file文件用tar压缩成bz2的格式
4)将压缩文件复制到家目录下
5)进入到家目录解压压缩文件
6)删除压缩包
变量:
用户自定义变量:
一般用大写
进行赋值用=,左右两边不能有空格
引用变量前面加$
位置变量:
$0 或者 ${0} 是命令行的第一个参数,也就是包含脚本名的参数 ./xx.sh
$1,$2...就是剩下的第二个第三个命令行参数了,以此类推
$# :所有命令行参数的个数(除了第一个命令行参数)
$@ 或者 $* 所有命令行参数(除了第一个命令行参数)
C语言命令行参数:
预定义变量
$? 前一个命令的退出状态(0为真非0为假)
$$ 正在执行进程的ID号
环境变量
环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。
HOME: /etc/passwd文件中列出的用户主目录
PATH :shell搜索路径,就是是一系列目录,当执行命令时,linux就在这些目录下查找。
功能语句
说明性语句
以#开头是注释,起解释说明作用
功能性语句
read:
功能:read从标准输入读入一行,并且赋值给后面的变量
格式:read V1 V2 V3
把读入行中的第一个单词赋值给V1变量,第二个单词赋值给V2,以此类推,把其余所有单词赋值给最后一个变量。
read -p "提示语句"变量列表:可以将提示语句输出,同时输入变量
expr:
expr表达式
注意:表达式符号间必须用空格,元素要用$引用
可以直接输出结果,不过脚本里一般结合命令置换符把结果重新赋值给其他变量。
算术运算符命令expr主要用于进行简单的整数运算,包括加(+)、减(-)、乘(\*)、整除(/)和取余数(%)等操作, 小括号前面也要加\。
练习:
通过expr实现变量自加运算(++i)