目录标题
- 6_22
- 1. 进程和线程
- 2. 数据7>>1
- 6_23
- 1. 用户相关指令
- 2. 创建用户
- (1. 查看id
- (2. 查看当前用户
- (3. 创建用户
- (4. 给新用户添加sudo权限
- >1 修改sudoers文件
- 2. 删除用户
- 3. 修改用户名
- 2. 磁盘
- 1. 保证ubuntu链接上U盘
- (1. VM弹窗,选择链接到虚拟机
- (2. 虚拟机---->可移动设备---->选择U盘---->链接
- 2. 查看U盘是否成功连接
- 3. 查看U盘的使用率
- 4. 给U盘分区
- 5. 格式化操作
- 6. 挂起
- 自制atoi函数
- 6_24
- 1. 查找字符串 grep
- 2. 查找文件 find
- 3. 截取字符串 cut
- 4. 压缩和解压缩
- >1. 压/解压缩 gzip
- >2. 压/解压缩 xz
- >3. 压/解压缩 bzip2
- >4. 压缩总结
- 5、归档和拆包
- 6. 下载指令
- 7. 创建链接文件
- >1 ln创建硬链接文件
- >2 ln -s 创建软链接文件
- 8. 练习
6_22
1. 进程和线程
头文件: #include <pthread.h>
- 多线程(LWP轻量版的进程) :线程是粒度更小的处理单元
进程是资源分配的最小单位,线程是调度器进行调度的最小单位
- 线程共享进程的资源,多进程拥有自己独立的资源
- 线程几乎不占用资源,只占用的很小的有关执行状态的资源,大概在(8K)左右
- 线程由于共用进程的资源,所以多线程没有多进程安全,使用多线程是因为开销较小
- 在一个进程内,至少有一个线程(主线程)
- 因为线程操作函数需要依赖于第三方库,所以,想使用线程处理函数,需要安装对应的库
2. 数据7>>1
7 --> 0111
0111 >> 1 ==> 0011 -->3
6_23
1. 用户相关指令
2. 创建用户
(1. 查看id
id -g/u/o
(2. 查看当前用户
whoami
(3. 创建用户
sudo adduser 用户名
(4. 给新用户添加sudo权限
>1 修改sudoers文件
先切换到能够执行sudo权限的用户或切换到root用户
sudo vim /etc/sudoers
修改文件
建议提前拍摄虚拟机快照,防止修改出问题
2. 删除用户
sudo userdel 用户名 ---->默认不删除家目录
sudo userdel -r 用户名 ---->删除家目录
sudo deluser 用户名 ---->默认不删除家目录,也不能加-r参数
3. 修改用户名
前提:保证用户不在登陆状态,没有进程占用
可以开机后,就不登陆该用户
sudo usermod -c 描述信息 用户名 ---->修改用户的描述信息,图形化界面看到的和开机的显示
sudo usermod -l 新的用户名 原来的用户名 ---->修改用户名
sudo usermod -m -d 新的家目录的位置 用户名 ---->修改用户的家目录位置
-m -MOVE -d -HOME_DIR
sudo usermod -g 目标组 用户名 ----->修改用户的所属组,目标组必须已经存在
sudo vim /etc/group ---->存放所有组用户的信息
2. 磁盘
1. 保证ubuntu链接上U盘
(1. VM弹窗,选择链接到虚拟机
(2. 虚拟机---->可移动设备---->选择U盘---->链接
2. 查看U盘是否成功连接
ls /dev/sd*
如果ls的结果包含除sda外的其他内容说明U盘连接成功。
sda---->Ubuntu的磁盘,sda1表示Ubuntu只有一个分区
sdb---->外部设备/U盘,adb1表示U盘只有一个分区
3. 查看U盘的使用率
如果U盘,挂载到了Ubuntu中的具体文件夹下,可以使用df -h查看到
如果没有挂载点,查看不到
df -h
4. 给U盘分区
fdisk ---->磁盘分区工具,如果没有fdisk工具,去使用apt下载
一定要使用sudo来完成fdisk相关的操作
fdisk常用的指令:
n:新建分区
d:删除分区
p:打印分区
q:退出
w:保存退出
5. 格式化操作
mkfs ---->make file system
sudo mkfs.要格式化的文件类型 分区
按两下tab可以显示,mkfs可以格式化的所有文件系统,常用ntfs(wins),ext3,ext4(ubuntu)
如下说明操作成功
6. 挂起
sudo mount 要格式化的分区 挂载的目标路径
"取消挂起"
sudo umount 挂载的路径
sudo umount 分区名
自制atoi函数
#include <stdio.h>
#include <string.h>
#include <math.h>
int my_atoi(const char* str)
{
int i=0;
int len = strlen(str);
int ret = 0;
for( i = 0; i < len; i++)
{
ret += (*(str+i)-0x30)*pow(10,len-i-1);
}
return ret;
}
6_24
1. 查找字符串 grep
grep 字符串 文件名
-w:按单词查找
-R:递归查找
-i:不区分大小写
-n:显示行号
grep -w "^ubuntu" /etc/passwd ---->查找以ubuntu单词作为开头位置的所在行
grep -w "ubuntu$" /etc/passwd ---->查找以Ubuntu为结尾的所在行
grep -w "^ubuntu$" /etc/passwd --->查找开头和结尾都是Ubuntu的所在行
2. 查找文件 find
在指定路径下以文件名查找文件
"查找路径 find -name 文件名"
3. 截取字符串 cut
aut -d "分隔符" -f "域"
4. 压缩和解压缩
压缩和解压缩后,源文件都不存在
只能对文件进行操作
>1. 压/解压缩 gzip
生成.gz后缀的文件
压缩:gzip 文件名
解压缩:gunzip 文件名.gz
>2. 压/解压缩 xz
生成.xz后缀的文件
压缩:xz 文件名
解压缩:unxz 文件名.xz
>3. 压/解压缩 bzip2
生成.bzip2后缀的文件
压缩:bzip2 文件名
解压缩:bunzip2 文件名.bz2
>4. 压缩总结
1. 压缩效率:xz>bz2>gz
2. 压缩时间:xz>bz2>gz
适用场合:xz一般用于需要将文件归档(长时间不再去使用),gz一般用于即时的文件传输
5、归档和拆包
归档/打包和拆包后的源文件仍然存在
打包/归档
tar -cvf 打包后的文件名.tar
-c:显示指令执行的过程
-v:实现打包功能
-f:file 该参数后面必须更文件名
-j:打包后以.bz2的形式压缩,生成后的文件名必须以.bz2结尾
-J:打包后以.xz的形式压缩,生成后的文件名必须以.xz结尾
-z:打包后以.gz的形式压缩,生成后的文件名必须以.gz结尾拆包 和 解压缩
tar -xvf 要拆包的文件名
6. 下载指令
apt-get
安装:install 软件名
删除:remove 不完全删除(保留配置文件)
卸载:remove --purge (完全卸载软件)
下载软件安装包
:download 软件名(不安装软件)
下载软件源码:source 源码名
清空安装包:clean 清空默认下载位置的安装包 /var/cache/apt/archives
7. 创建链接文件
>1 ln创建硬链接文件
指令:ln 被链接文件的路径 创建的硬链接文件的路径
例:
创建硬链接文件
可以看到他们的inode号是一样的,说明他们占用的是同一片空间
可以理解为两个文件是同一个文件,只是文件名不同
当只删除源文件或链接文件时,不影响硬链接文件内的内容,要想彻底删除这个文件需要将所有硬链接的文件全部删除
硬链接个数如下
>2 ln -s 创建软链接文件
软连接文件可以理解为快捷方式
指令:ln -s 被链接文件的绝对路径 创建的软链接文件的觉绝对路径
"创建时可以使用相对路径,但是最好使用绝对路径"
例
创建软连接:不会增加 ls -al 中的链接个数
他们的inode号不同
当软连接没有可以链接的文件时会链接失败 如下:
ln -s 被链接文件的绝对路径 软链接文件的绝对路径
ln -s /home/ubuntu/23041C/day2/1.c /home/ubuntu/23041C/100.c
给/home/ubuntu/23041C/day2/1.c创建了一个路径为/home/ubuntu/23041C/100.c文件
1、创建软链接文件时,使用绝对路径
2、软链接文件可以理解为快捷方式
3、软链接文件的文件类型是l,他不会增加文件描述中的链接文件个数
4、软链接文件,如果源文件被删除,链接会断开,软链接文件会失效,如果重新创建一个同名的源文件,软链接文件会重新链接,并且链接到新创建的文件
5、软链接文件的修改会影响到源文件,源文件的修改也会影响软链接文件
6、wins下不支持软链接文件,Linux下的压缩包不要放到主机下解压