一张linux学习路线图,涵盖了linux所有的知识点,珍藏版干货

哦,你的Linux学习路线图已经完全完成了。
我学Linux的时候,不太精确。
我只是自己胡闹而已。

我想在1 9 9 8 年,当我刚进入这个行业时,我的工作单位配备了一台HP服务器,它是基于Unix的。
后来慢慢的转向了Linux。
那时候还没有虚拟机,都是直接安装在物理机上的。
记得第一次安装Linux的时候,我纠结了很长时间。
硬盘分区错误,所有数据丢失。
我满头大汗。
直到今天我还记得这个教训。

我已经经历了我提到的所有阶段。
说到Linux文件系统,初学者不得不走一些弯路。
起初,我分不清哪些是系统目录,哪些是用户目录,而且经常把文件放在错误的文件夹中。
后来慢慢熟悉了才知道根目录下的那些东西是多么的重要。

Linux命令绝对是精髓。
我每天都使用你提到的 ls、cd 和 pwd。
但我在学习的时候,更多的是依靠尝试和错误。
有时命令参数使用错误,导致系统死机,不得不重新启动。
还有grep、sed、awk等文本处理工具。
刚开始看说明书时我很困惑,但使用几次后,我意识到它有多棒。
运营管理也很重要。
一开始我分不清ps和top的区别,感觉自己在看一堆乱码。
后来老师教我ps看当前进程,抬头看实时进程,我就明白了。
内存和磁盘管理是重中之重。
我曾经遇到过好几次系统内存满了,导致整个服务挂掉的情况。
每次检查都要一项一项的检查,很烦人。

我遇到了用户权限管理问题。
有一次,我给一位新同事添加了一个用户。
我握了握手,给了他root权限。
结果,他错误地格式化了磁盘。
太可怕了,几乎毁掉了服务器。
所以后来我学会了更严格,更严格地控​​制自己的权限。

网络配置,这个我很熟悉。
我使用你提到的ifconfig和ip。
然而,许多系统不再使用它们,而是使用 netplan 等。
至于防火墙,之前用的是iptables,后来改用firewall,看起来更简单。

Web服务器、基础服务器数据,我也这么做了。
我已经部署了Apache和Nginx。
MySQL有很多风险。
有时一更新就出现问题,排查需要花大半天的时间。
我对 FTP 服务器和邮件服务器的经验有限,而且没有太多经验。

Shell脚本,我写了很多。
但它们都是用于自动执行一些重复性任务的简单脚本。
你提到的高级功能对我来说太老了,无法学习,哈哈。

Linux系统调优和安全配置,这些东西我也接触过。
系统性能监控工具,我通常使用top和htop。
制度的调整要根据具体情况而定,不能一概而论。
对于安全配置,我通常会关闭非必要的服务并保持防火墙规则尽可能简单。

总的来说,您的路线图相当全面。
但要学习Linux,不能光看书,还得实践。
当时我正在继续安装和配置系统,然后慢慢开始。
如果您有任何具体问题,可以问我,我会告诉您我所知道的一切。

Linux多线程编程基础学习

Linux多线程编程利用系统线程机制来执行多个任务,效率很高。

线程分为内核线程和用户线程。
内核线程在内核中运行,用户线程在用户空间中运行。

一个进程可以打开 M 个内核线程和 N 个用户线程。
M:N决定了如何实现:纯用户空间、纯内核、还是混合调度。

Linux使用NPTL线程库。
现在默认为 NPTL。
将内核线程与用户线程对齐。

使用pthread_create创建线程,使用pthread_exit退出。
使用pthread_join进行回收,使用pthread_cancel进行取消。

信号量控制对资源的访问。
使用 sem_init、sem_wait 等进行初始化。

互斥体保护代码块。
使用pthread_mutex_lock来锁定,使用pthread_mutex_unlock来解决。

死锁示例:一个又一个锁(递归锁)或者两个锁都乱序。

条件变量同步数据值。
使用pthread_cond_wait等。

可重入函数是线程安全的。
例如,localtime 有一个 localtime_r 版本。

分叉的子进程只有一个线程,它是父进程的副本。
互斥锁状态也被传递。

线程独立设置信号掩码。
然而,过程信号处理功能是共享的。

第2篇 Linux系统编程 -多线程基础

pthread_create 是一个神奇的线程创建技能。
The parent thread and child thread IDs are different, but the process IDs are the same. 线程共享内存但独立执行。
The callback function is void and uses the structure to pass the parameters. 检查pthread_create的返回值。
如果创造失败,就会爆炸。
Sleeper (3 ) prevents the main thread from exiting quickly. Understand process and resource allocation and program without panic.