0%

了解linux系统内核

内核的主要作用

  • 系统内存管理
  • 软件程序管理
  • 硬件设备管理
  • 文件系统管理

什么是虚拟内存
内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为交换空间(swap space)。
平常使用的都是阿里云,发现阿里云把swap的空间为0。查看官方文档后发现如果使用普通云盘,不建议使用
swap分区,原因是因为开启SWAP可能会因频繁换页操作,导致IO性能下降,如果内存足够的情况下,建议关闭
swap 分区。

软件程序管理
Linux操作系统将运行中的程序称为进程。进程可以在前台运行,将输出显示在屏幕上,也可以在后台运行。
内核创建第一个进程称为init进程,来启动系统上其他进程,并将其加载到虚拟内存中。

一些Linux发行版使用一个表来管理在系统开机时要自动启动的进程。在Linux系统上,这个表通常位于/etc/inittab中。
另外一些系统则采用/etc/init.d目录,将开机时启动或停止某个应用的脚本放在这个目录下。

Linux 操作系统的init系统采用了运行级。运行级决定了init进程运行/etc/inittab文件或者/etc/rcX.d目录中定义好
的某些特定类型的进程。Linux操作系统有5个启动运行级。(但是在使用centos7的时候发现有7个运行级别0-6)

CentOS系统有7个运行级别(runlevel)

运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

不过在centos7中使用Systemd 取代init,init 是串行的,启动速度比较慢。

硬件设备管理
内核的另外一个作用就是管理硬件设备。如果使用硬件,都需要在内核代码中加入其驱动程序代码。在Linux中有两种方法插入设备驱动

  • 编译进内核的设备驱动代码
  • 可插入内核的设备驱动代码(这种方式比较方便,利于维护)

文件系统管理
Linux 内核通过支持通过不同类型的文件系统从硬盘中读写数据。这样可以支持多种文件系统,需要内核在编译时就加入可能用到的文件系统的
支持。

Shell 的种类
在Linux系统上,通常由好几种Linux Shell 可用。不同的Shell有不同的特性,有些利于创建脚本,有些利于管理进程。

  • ash 一种运行在内存受限环境中的简单轻量级shell,与bash shell完全兼容
  • korn 一种与Bourne shell 兼容的编程shell,支持如关联数组和浮点运算等一些高级的编程特性
  • tcsh 一种将C 语言中的一些元素引入到shell脚本中的shell
  • zsh 一种结合了bash、tcsh和korn的特性,同时提供高级编程特性、共享历史文件和主体话提示符的高级shell。在Mac 下面使用zsh 还是非常方便的。

Linux 图形化桌面 基本上用不到,就略过了。

文件路径

  • 相对路径
  • 绝对路劲
    pwd 命令查询当前所在的目录
    ls -F 显示出文件夹和普通文件
    ls -F -R -R 递归文件夹

文件拷贝
copy -R 拷贝整个目录和文件

链接文件

  • 符号链接
  • 硬链接
    ln -s
    ln

2018年07月11日11:20:39(更新)

环境变量

  • 全局变量
  • 局部变量

网络安全越来越重要,很多的网站都开始使用https来增加网站的安全性,Let’s Encrypt 最近支持了泛域名SSL
证书,这样一个域名只需要一个SSL证书就搞定了,之前阿里云等云服务商提供了免费的SSL证书,但是只支持一个子域名一个证书,最多20个(一般人其实够用了),但是申请多个证书还是比较麻烦,而且很重要的一个原因,云服务商提供的通配符证书价格很贵,使用Let’s Encrypt费用就可以省了,唯一需要做的就是要进行证书续期。

阅读全文 »

python在本地使用的时候,不需要关心使用的依赖的问题,但是将代码上传到服务器以后,服务器上可能没有对应的包,这个时候程序运行就会报错,所以为了程序能够正常启动,就需要使用requirements.txt来记录版本依赖,有点类似Java中的Maven,管理Jar包。

阅读全文 »

Life is short, you need Python.

上面那句话可能大家耳熟能详的一句话了,形象的表达了Python。有时候一些简单的功能验证或者是文本处理等,用Java等语言实现需要很长的时间,这个时候用Python你会发现,短短几行就搞定了,剩下的时间你就可以去喝咖啡了。

阅读全文 »

知之愈明,则行之愈笃;行之愈笃,则知之益明.——朱熹(宋)

我们在平常学习了很多的知识,但是如果没有深入去实践,知识掌握就不会牢固,所以需要通过实践来巩固。现在大多数的业务都切换到了Spring Boot,更加复杂和庞大的业务则使用Spring Cloud,当然也有用Dubbo,所以准备在Spring Boot中集成Docker,进行服务化。

阅读全文 »

人生苦短,我用Python

Python 短小精悍,在很多小地方使用Python,能提升效率,产生更大的价值。一般我们更多的是在本地使用,或者一个人使用,但是在服务器上,可能存在多人使用的情况,所以需要不同版本的Python,手动安装很容易冲突,所以采用环境管理来进行管理。

阅读全文 »

什么是DevOps

DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。

阅读全文 »

原因

我们经常使用GitHub、GitLab、Gitee 之类的仓库,有时候需要频繁的发布代码打包,人工发布,工作量有时候会很大,有时候还容易出错,所以会使用Jenkins一类的工具进行辅助,但是如果是一个简单的项目或者是个人项目使用Jenkins就显得太重了,可以直接使用webhook,比较方便。

阅读全文 »

下载node

1
wget https://nodejs.org/dist/v8.9.4/node-v8.9.4-linux-x64.tar.xz

解压&配置

1
2
tar xvJf node-v8.9.4-linux-x64.tar.xz
mv node-v8.9.4-linux-x64 /opt
1
vim /etc/profile
1
2
3
4
#设置node 环境变量
export NODE_HOME=/opt/node-v8.9.4-linux-x64
export PATH=$NODE_HOME/bin:$PATH
source /etc/profile

测试是否成功

1
node -v

或者安装nvm

1
2
3
4
5
6
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
vim /etc/profile
#加入下面的内容
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm、
source /etc/profile

检查是否安装成功

1
nvm --version

安装node

1
2
3
nvm install stable # 安装稳定版
nvm current # 查看当前的版本
nvm ls # 列出所有版本

不要在生产环境中使用,在开发和测试阶段使用比较方便

阅读全文 »