菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
164
0

Linux 笔记

原创
05/13 14:22
阅读数 95186
Preface

本文中大部分内容来自 IBM 开发者社区中的文章,并且会用【IBM】这样的符号标识。

System Startup and Shutdown

init: SystemV, Upstart, systemd

  1. systemctl

    arch 默认用的就是 systemd 那一套,执行 top 命令就可以看到,在系统的最底层只运行着两个进程(其实现在还不怎么明白进程和线程什么区别,就像在 arch 中,所有的上层应用都是 systemd 这个进程的线程,而当前用户启动的应用程序则都属于当前 sh(bash,dashi,zsh) 下的子线程;也像系统一样,大倒整个宇宙,地球,生物圈,小到计算机软件平台,某个应用软件。生么东西,归为了一类,互相联系,互相影响,似乎就可以谓之曰系统),按照每天处理一张以前的笔记的心态,今天轮到它了(systemctl)。平时用得最多的应该是用之管理服务的启动,重载,关闭,以及查询了吧,下面是一些基本的用法:(以下,service_name 代指服务的名称,其中 service 可是是具体的 demon (*.service),也可以是挂载点 (*.mount),套接口 (*.socket)

    1. systemctl start service_name --> 开启服务
    2. systemctl stop service_name --> 关闭服务
    3. systemctl restart service_name --> 重启服务
    4. systemctl status service_name --> 查看服务的运行状态
    5. systemctl enable service_name --> 将服务设置为启动
    6. systemctl disable service_name --> 将服务取消开机启动
    7. systemctl is-enabled( is-active, is-failed ) service_name --> 查看服务是否启用(是否为激活/运行状态,是否出现错误)
    8. systemctl show service_name --> 查看服务的配置详细信息
    9. systemctl list-units --> 列出所有运行中单元
    10. systemctl list-unit-files --> 列举所有(包括运行和未运行的)的单元
    11. systemctl --failed --> 列举所有运行失败的单元
    12. systemctl mask( unmask ) service_name --> 屏蔽(显示)服务
    13. systemctl kill service_name --> 杀死服务
    14. systemctl show -p CPUShares service_name --> 获取当前服务的 cpu 分配额
    15. systemctl set-property service_name CPUShares=2000 --> 将某个服务的 CPU 分配额设置成 2000 (一般默认是 1024)
    16. systemctl list-dependencies service_name --> 查看某个服务的依赖性
    17. systemd-analyze critical-chain sevice_name --> 查看某个服务的关键链(如果不知道这是什么最好的办法就是动手测试,并 google )
    18. systemd-cgls --> 按照等级,列举出控制组
    19. systemd-cgtop --> 按CPU、内存、输入和输出列出控制组
    20. systemctl rescue --> 进入系统救援模式
    21. systemctl emergency --> 进入系统紧急模式
    22. systemctl get-default --> 列举出当前的运行等级
    23. systemctl isolate runlevel5.target --> 启动运行等级(5,图形模式)(PS:以此类推)
    24. systemctl set-default runlevel(x:3,5...).target --> 设置默认运行等级
    25. systemctl reboot --> 重启
    26. systemctl halt --> 停止
    27. systemctl suspend --> 挂起
    28. systemctl hibernate --> 休眠(PS:休眠和混合睡眠都要求系统拥有 swap 分区,而且大小与内存一样大)
    29. systemctl hybrid-sleep --> 混合睡眠
参考文档
  1. 浅析 Linux 初始化 init 系统,第 1 部分: sysvinit
  2. 浅析 Linux 初始化 init 系统,第 2 部分: UpStart
  3. 浅析 Linux 初始化 init 系统,第 3 部分: Systemd
  4. 采访 Systemd 和 PulseAudio 创始人 Lennart
  5. systemd、upstart和system V
  6. SystemV和BSD的区别 V
Linux Filesystem Tree Layout

涉及到的命令 df du /proc 目录介绍

正则表达式

    请等待更新...

  1. 使用正则表达式搜索文本文件 -->
Shell Script

  1. 被用到判断中的特殊参数
    1. -e 判断文件是否存在
    2. -d 判断文件类型是否为目录类型
    3. -f 判断文件类型是否为普通类型
    4. -L 判断文件类型是否为链接类型
    5. -r 判断文件是否可读
    6. -w 判断文件是否可些
    7. -x 判断文件是否可执行
    8. -nt 判断前文件是否比后文件新
    9. -ot 判断前文件是否比后文件旧
    10. -z 判断是否为空串
    11. -n 判断是否为非空串
    12. = 判断前后比较对象是否一致
    13. != 判断前后对象是否不一致
    14. -eq 判断前后数字是否相等
    15. -ne 判断前后数字是否不相等
    16. -lt 判断前数字是否小于后数字
    17. -le 判断前数字是否小于等于后数字
    18. -gt 判断前数字是否大于后数字
    19. -ge 判断前数字是否大于等于后数字

    请等待更新...

Linux 信号机制

  1. 应用层不活信号的两种方法:

    通常 linux 在应用层捕捉信号有两种机制,第一种是利用 `signal` 函数注册,但是这种处理方式只会在第一次捕捉到该信号的时候响应一次,随后系统会恢复成默认的处理方式。如果想要一次注册之后永久生效就需要用到 `sigaction` 这个机制了。下面给出两种机制的使用方法:

        // signal 使用方法
        #include 
        typedef void (*sighandler_t)(int);
        sighandler_t signal(int signum, sighandler_t handler);
    
        // sigaction 使用方法
        #include 
        int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
        struct sigaction
        {
               void    (*sa_handler)(int);
               void    (*sa_sigaction)(int, siginfo_t *, void *);
               sigset_t  sa_mask;  //额外屏蔽的信号
               int        sa_flags;
               void    (*sa_restorer)(void);
        };
    

    第一个参考文档中有更加详细的例子。

  2. Linux 系统信号机制处理流程:
    a.用户为某信号注册一个信号处理函数sighandler。
    b.当前正在执行主程序,这时候因为中断、异常或系统调用进入内核态。
    c.在处理完异常要返回用户态的主程序之前,检查到有信号未处理,并发现该信号需要按照用户自定义的函数来处理。
    d.内核决定返回用户态执行sighandler函数,而不是恢复main函数的上下文继续执行!(sighandler和main函数使用的是不同的堆栈空间,它们之间不存在调用和被调用的关系,是两个独立的控制流程)
    e.sighandler函数返回后,执行特殊的系统调用sigreturn从用户态回到内核态。
    f.检查是否还有其它信号需要递达,如果没有 则返回用户态并恢复主程序的上下文信息继续执行。
参考文档
  1. Linux下捕捉信号
服务器搭建与配置

  • apache2
    1. 监听端口

      如需要修改 apache 的监听端口,可在 /etc/apache2/ports.conf 中配置,语法为 Listen port_num (such as: Listen 8080)

    2. IfDefine & IfModule

      Apache 允许使用 IfDefine 以及 IfModule 指令来快速而且更容易的更改配置。IfDefine 标签允许在命令行中使用某个标志来指定 IfDefine 内的配置选项否出于启用状态, IfModuole 标签具有类似的效果,其作用是先检查当前模块是否已经加载,若已经加载,则标签中的配置有效,若没有加载,则标签中的配置无效。

  • ngnix
    1. 反向代理

      个人理解反向代理及将接收到的请求分发给在其他可访问到的服务器,方便实现服务器的负载均衡,也可减少主服务器的压力。详细概念在这里就不再赘述了,请参考参考文档。这里只是记录一下自己在搭建反向代理中需要主要的一些问题。1. 以集群域名创建的 upstream 对象应该放在 html 对象下; 2. 在 server 对象中设置目录反向代理的 proxy_pass 成员时,一个目录只能设置一个 proxy_pass;3. proxy_pass 的参数为 upstream 对象的名字;4. 如果你为 /abc/ 目录指定了反向代理服务器 www.test.com ,那么在 www.test.com 这个服务器集群的跟目录下一定要有 abc 这个文件夹。5. /etc/nginx/site-avaliable 目录下只是可以用来配置的服务,启动 nginx 时真正引用的是 /etc/nginx/site-enabled 目录下的配置文件(apache2 也一样)。

参考文档
Sub title

待更新:du df 文件系统目录说明 信号处理 vim 编辑器使用

    请等待更新...


参考文档
相关文档
随便转载,我不介意,本文档遵从 wtfpl 协议
我是留白;我是留白;我是留白;(重要的事情说三遍)

To Top

发表评论

0/200
164 点赞
0 评论
收藏