插 tls/ssl
插多核 cpu 相关内容:
现在多核 cpu,一个线程可能会在不同的核上面切换运行。
stat 显示文件信息,可以直接在终端里面使用,效果图如下:
Linux 文件类型有七种。也可以通过 file + 文件名获取文件类型。
1、普通文件类型
Linux 中最多的一种文件类型, 包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文
件(data);各种压缩文件.第一个属性为 [-]
2、目录文件
就是目录, 能用 # cd 命令进入的。第一个属性为 [d],例如 [drwxrwxrwx]
3、块设备文件
块设备文件 : 就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬
盘的代码是 /dev/hda1 等文件。第一个属性为 [b]
4、字符设备
字符设备文件:即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c]
5、套接字文件
这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以
通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run 目录中看到这种文件类型
6、管道文件
FIFO 也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成
的错误。FIFO 是 first-in-first-out(先进先出)的缩写。第一个属性为 [p]
7、链接文件(软链接文件的默认权限是 777)
类似 Windows 下面的快捷方式。第一个属性为 [l],例如 [lrwxrwxrwx]
粘滞位:
今天维护系统时发现一个非常诡异的问题:AAA 用户和 BBB 用户同属 AAA 组,但用 AAA
用户创建的文件,权限设置为 777 后,还是不能用 BBB 用户删除。诡异!
几经周转,发现 AAA 用户创建文件位置的上层目录的权限是 drwxrwxrwt,做开发这么多
年了,还没见过所谓"t"的权限,于是找了一位公司的 linux 大师帮忙,大师噼里啪啦的做了一
堆试验后,然后在 google 上搜索"rwt linux",终于发现了问题,发现这种用法的名字是“文
件的粘滞位(sticky)位“。它的作用是:普通文件的 sticky 位会被 linux 内核忽略,但
目录的 sticky 位表示这个目录里的文件只能被 owner 和 root 删除,没错这就是问题本质,
也和我的现象相吻合。于是用 root 用户,对这个文件夹 chmod -t 后,用 BBB 用户就可以
删除刚才 AAA 用户创建的文件了。一切正常了。哇。。。。世界太平了!
通过和原先设计好的掩码(事先设计好的宏)进行与操作判断是否具有某些权限或者判断文
件类型。
lstat 获取软连接文件本身的信息,而不是软链接文件指向文件的信息。
sprint(buf,控制格式,数据); 将数据批量写入缓冲区。
下方代码展示了 sizeof 和 strlen 的区别。
// strlen 与 sizeof 对数组和指针的求法
#include <stdio.h>
#include <string.h>
int main()
{
char *pcColor = "12345678";
char acColor[] = "12345678";
printf("%d\n", strlen(pcColor));//8 求字符串的大小
printf("%d\n", strlen(acColor));//8 求字符数组的大小
printf("%d\n", sizeof(pcColor)); //4 求 pcColor 指针的大小
printf("%d\n", sizeof(acColor));//9 求字符数组的大小,包括\0
return 0;
}
文件属性操作相关函数:
access 判断是否有权限判断的是当前文件是否有相关权限,access 还可判断文件是否存在。
truncate:缩减或扩展文件尺寸至指定的大小。
注意使用这些函数给 mode 赋值时,要以 0 开头表示八进制的数。一个文件啊必须要有可执
行权限才能进入那个目录下。
目录操作函数:
chdir 修改进程当前工作目录。
目录遍历相关函数。
每次调用一次 readdir 就会向后移动一个信息(向后读一个目录项)。
dup,dup2 函数。dup 复制文件描述符,dup2 重行绑定文件描述符。
fcntl 函数。主要了解代码展示时的部分功能:改变文件描述符和查看/修改文件状态。
Ps ajx 和 ps aux 相比会多显示一些信息,比如 ajx 会显示当前进程父进程的 id。
top -t 可以指定刷新时间,按 q 退出 top 显示
Kill 杀死进程有时候杀不掉,需要加上 kill -9 强制杀掉,解释:
这块后面学习到信号那一块的时候就能够明白了,加 -9 表示的是 9 号信号。其实 kill
并不是杀死进程,而是发送信号,而 9 号信号能够强制杀死进程,其它的信号有的可以有
的不可以。
kill 命令默认的信号是 15,即 kill -15,此时系统发送一个 SIGTERM 的信号给对应程序,
当程序接收到该信号后,具体如何处理是自己可以决定的(可结束,可忽略),结束前一般
会进行一些"准备工作"。由于 SIGTERM(15)的信号可以被阻塞和忽略,这也导致有时候
使用 kill 命令没办法"杀死"应用;
9 号信号能够强制杀死进程,系统会发出 SIGKILL 信号,要求接收到该信号的程序立即
结束运行,不能被阻塞或忽略,这通常会带来一些副作用,因为应用程序没有时间进行"准
备工作",可能造成数据丢失或者终端无法恢复到正常状态等;