linux二探

本文详细探讨了Linux系统,特别是Ubuntu 18.04中的核心概念,包括守护进程和Systemd。Systemd作为Linux的初始化系统,提供了多种子命令如systemctl,用于系统管理。此外,文章还介绍了包管理工具apt和防火墙组件ufw的使用,对于理解和操作云服务器具有实践指导意义。

linux

近期想了解下服务端的知识查漏补缺,便买了个云服务器,终于可以在真实场景中学习并使用了,将理论学习内容记载如下。关于个人对云服务器的应用会另行发文。

基于Ubuntu18.04

概念

守护进程

daemon,不依赖命令行窗口开启而运行的进程。
任务可分为

  • 前台任务(foreground job)。会独占命令行窗口,只有运行完成或手动中止,才能执行其他命令。
  • 后台任务(background job)。不需要命令行窗口即可运行。但不等于守护进程。
# 以后台方式启动进程:在末尾加&
$ node server.js &
# 将运行中的前台任务变为后台任务:按`ctrl + z`,然后执行`bg`

有很多方法可以将前台任务变成守护进程:守护进程 - 阮一峰

Node.js有一些专门的启动工具:forevernodemonpm2

  • forever:保证进程退出时,应用自动重启
  • nodemon:一般开发时使用,监听文件变化,自动重启进程
  • pm2:最强大,除了重启进程,还能收集日志、监控

Systemd

Linux系统工具。设计目标是为系统的起点和管理提供一套完整的解决方案。
Linux惯例,字母d是守护进程(daemon)的缩写。System 的含义,就是它要守护整个系统。
Systemd实际上不是一个命令,而是一组命令。

Systemd的子命令

  1. systemctl
    Systemd的主命令,用于管理系统
# 重启系统
$ sudo systemctl reboot
# 关闭系统,切断电源
$ sudo systemctl poweroff
# ...
  1. systemd-analyze
    用于查看启动耗时。
# 查看系统启动耗时
$ system-analyze
# ...
  1. hostnamectl
    用于查看主机信息
# 显示当前主机信息
$ hostnamectl
# ...
  1. localectl
    用于查看本地化设置
# 查看本地化设置
$ localectl
  1. timedatectl
    用于查看当前时区设置
# 查看当前时区设置
$ timedatectl
# ...
  1. loginctl
    用于查看当前登录的用户
# 列出当前session
$ loginctl list-sessions
# 列出当前登录的用户
$ loginctl list-users
# ...

Systmed的Unit

Systemd可用来管理所有系统资源,不同的系统资源统称为Unit。默认unit后缀为service,是service试可不带,如nginx。

target是多个关联unit的组合。

# 列出正在运行的 Unit
$ systemctl list-units
# 查看系统状态
$ systemctl status
# 查看指定unit的状态
$ systemctl nginx
# 启动某服务
$ sudo systemctl start nginx
# 停止某服务
$ sudo systemctl stop nginx
# 重启某服务
$ sudo systemctl restart nginx
# 杀死一个服务的所有进程
$ sudo systemctl kill nginx
# 重载一个服务的配置文件
$ sudo systemctl reload nginx
# 重载所有修改过的配置文件
$ sudo systemctl daemon-reload
# 显示某个 Unit 的所有底层参数
$ systemctl show nginx
# 列出某个 Unit 的所有依赖
$ systemctl list-dependencies nginx.service

Unit的配置文件

默认目录 /etc/systemd/system/ ,大多是符号链接,指向真正的目录 /usr/lib/systemd/system

# 建立配置的符号链接关系,如果配置文件设置了开机启动,则会激活开机启动
$ sudo systemctl enable nginx
# 断开符号链接关系(撤销开机启动)
$ sudo systemctl disable nginx.service
# 列出所以配置文件状态
$ systemctl list-unit-files
# 列出指定类型的配置文件
$ systemctl list-unit-files --type=service
# 查看配置文件内容
$ systemctl cat nginx

Systemd的日志管理

命令: journalctl

# 查看所有日志(默认情况下 ,只保存本次启动的日志)
$ sudo journalctl
# 查看某个 Unit 的日志
$ sudo journalctl -u nginx.service

apt

Advance Packaging Tools,Ubuntu的包管理器。(类似于node的npm?)

# 检查已安装包的更新
$ sudo apt update
# 安装软件包
$ sudo apt install nginx
# ...

ufw

Ubuntu的防火墙组件。需要sudo权限。默认禁用。
开启后默认阻止所以传入连接并允许所有出站连接。 即若未做好此项配置,想访问服务器的未被允许的端口是不会成功的。例:网页请求、接口访问、数据库访问等。需配置ufw将对应端口开启。

# 安装
$ sudo apt install ufw
# 检查状态
$ sudo ufw status verbose
# 查看可用的配置文件
$ sudo ufw app list
# 查看配置规则详情
$ sudo ufw app info 'Nginx Full'
# 应用配置文件
$ sudo ufw allow 'Nginx Full'
# 允许特定功能连接
# ssh(22/tpc)/http(80/tpc)/https(443/tcp)
$ sudo ufw allow ssh
# 允许指定端口/协议
$ sudo ufw allow 4422/tcp
# 允许端口范围
$ sudo ufw allow 7100:7200/tcp
$ sudo ufw allow 7100:7200/udp
# 允许特定IP的所有端口
$ sudo ufw allow from 8.8.8.8
# 允许特定IP的特定端口
$ sudo ufw allow from 8.8.8.8 to any port 22
# 启用ufw
$ sudo ufw enable
# 停用ufw
$ sudo ufw disable
# 重置ufw
$ sudo ufw reset
# ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值