systemd

linux systemctl 指令 —— 阮一峰

大憨熊 提交于 2020-08-10 07:45:10
Systemd 指令 原文链接如果有效,请点击原文链接查看。 原文: http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html 一、由来 历史上, Linux 的启动 一直采用 init 进程。 下面的命令用来启动服务。 $ sudo /etc /init .d /apache2 start # 或者 $ service apache2 start 这种方法有两个缺点。 一是启动时间长。 init 进程是串行启动,只有前一个进程启动完,才会启动下一个进程。 二是启动脚本复杂。 init 进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。 二、Systemd 概述 Systemd 就是为了解决这些问题而诞生的。它的设计目标是,为系统的启动和管理提供一套完整的解决方案。 根据 Linux 惯例,字母 d 是守护进程(daemon)的缩写。 Systemd 这个名字的含义,就是它要守护整个系统。 使用了 Systemd,就不需要再用 init 了。Systemd 取代了 initd ,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。 $ systemctl --version 上面的命令查看 Systemd 的版本。 Systemd 的优点是功能强大

Dockerfile与Dockerfile实战

放肆的年华 提交于 2020-08-10 06:43:52
前言 ​ 先前我们在讲述docker的镜像构建时对Dockerfile做了初步介绍,本文将结合上次的内容做更加细致的介绍,从回顾到实战演练讲述Dockerfile,本文先通过三个简单的案例感受、理解Dockerfile,主要是写httpd、sshd、以及systemctl的Dockerfile,之后会进行对其他服务如Nginx、Tomcat以及MySQL编写并且测试Dockerfile。 回顾Dockerfile ​ 说到Dockerfile,就离不开Dockerfile的核心组件,尤其是镜像。镜像是运行容器的基础环境,也就是说镜像是docker容器创建的关键,而创建镜像的三种方式之一的Dockerfile是最为灵活的。 什么是Dockerfile? ​ Dockerfile可以看做是被Docker程序所解释翻译的脚本,由一组命令集合而成,每一条命令都对应一条操作命令,有其翻译为Linux下的具体命令。用户可以通过自定义内容来快速构建镜像。 ​ 其实说简单点,你可以认为Dockerfile是“专门用于构建镜像的shell脚本”。 ​ 还记得Dockerfile的严格格式吗?我们先来看一下这个表格。 ​ Dockerfile是一种分层结构,其中的指令每一条都会构建一层镜像及容器,只不过这是临时的,除了基础镜像,其他中间产生的容器最后都会被清除。当然有时候会出现一些“无名氏”镜像

centos7.6下部署ETCD3.4.7 集群 (最详细步骤)

↘锁芯ラ 提交于 2020-08-10 06:34:42
安装包地址: https://github.com/etcd-io/etcd/releases 解压安装文件 tar -xvf etcd-v3.4.7-linux-amd64.tar.gz cd etcd-v3.4.7-linux-amd64 cp etcd etcdctl /k8s/etcd/bin/ 设置etcd的配置文件 cat /k8s/etcd/cfg/etcd #[Member] ETCD_NAME="etcd01" ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_PEER_URLS=" https://192.168.2.88:2380 " ETCD_LISTEN_CLIENT_URLS=" https://192.168.2.88:2379 " #[Clustering] ETCD_INITIAL_ADVERTISE_PEER_URLS=" https://192.168.2.88:2380 " ETCD_ADVERTISE_CLIENT_URLS=" https://192.168.2.88:2379 " ETCD_INITIAL_CLUSTER="etcd01= https://192.168.2.88:2380,etcd02=https://192.168.2.81:2380,etcd03

Linux系统如何设置开机自动运行脚本?

会有一股神秘感。 提交于 2020-08-09 20:28:54
大家好,我是良许。 在工作中,我们经常有个需求,那就是在系统启动之后,自动启动某个脚本或服务。在 Windows 下,我们有很多方法可以设置开机启动,但在 Linux 系统下我们需要如何操作呢? Linux 下同样可以设置开机启动,但可能需要我们敲一些命令(可能也有 UI 界面的设置方法,但我不熟,我更多是玩命令)。下面我们就介绍三种简单但可行的开机启动设置方法。 方法一:修改 /etc/rc.d/rc.local 文件 /etc/rc.d/rc.local 文件会在 Linux 系统各项服务都启动完毕之后再被运行。所以你想要自己的脚本在开机后被运行的话,可以将自己脚本路径加到该文件里。 但是,首先需要确认你有运行这个文件的权限。 $ chmod +x /etc/rc.d/rc.local 为了演示,我们创建了一个脚本,当它被执行之后,将在家目录下写入有特定信息的文件。 $ vim auto_run_script.sh #!/bin/bash date >> /home/alvin/output.txt hostname >> /home/alvin/output.txt 保存退出后,再给它赋予可执行权限: $ chmod +x auto_run_script.sh 然后,我们再将脚本添加到 /etc/rc.d/rc.local 文件最后一行: $ vim /etc/rc.d/rc

CentOS7安装MongoDB(3)

烂漫一生 提交于 2020-08-09 13:30:24
目录 创建配置文件 systemd管理 重载daemon 设置开机自启 MongoDB服务管理常用命令 查看当前MongoDB版本 安装PHP-mongodb扩展 软件下载地址: https://www.mongodb.com/try/download/community 提供了二进制执行版,不需要make安装,将解压好的内容,直接移动到软件安装目录即可。 在软件安装目录(/usr/local/src)下创建一个名为mongodb的软连接 ln -s mongodb-4.2 mongodb 然后将MongoDB的bin目录添加到环境变量中 export $MONGO_PATH=/usr/local/mongodb/bin export PATH=$MONGO_PATH:$PATH 然后执行source命令使其修改立即生效 创建配置文件 创建一个mongodb用户,用于运行软件 # 创建mongodb用户用于管理mongodb程序 useradd mongodb -s /sbin/nologin -M 创建一个mongodb配置文件 cd /usr/local/mongodb mkdir data log run conf chown -R mongodb:mongodb data log run conf 然后在mongodb.conf中自定义一些配置,比如指定日志路径和数据库路径

Docker简介与安装

牧云@^-^@ 提交于 2020-08-08 19:22:14
Docker简介;Docker与虚拟机区别;Docker的优点及内部组件说明;如何安装Docker与镜像加速配置。 什么是Docker Docker提供了一个可以运行你的应用程序的封装,或者说容器。它原本是dotCloud的一个内部项目,开源的时候吸引了大量的关注与讨论,后续导致dotCloud把公司名称改为了Docker Inc。Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。 Docker 使用 Google 公司推出的 Go 语言进行开发实现并遵从Apache2.0协议开源,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。 Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker

How to extract service state via Systemd DBus API?

故事扮演 提交于 2020-08-08 06:45:05
问题 I'm trying to extract openvpn.service status using Systemd D-Bus API. In [1]: import dbus In [2]: sysbus = dbus.SystemBus() In [3]: systemd1 = sysbus.get_object('org.freedesktop.systemd1', '/org/freedesktop/systemd1') In [4]: manager = dbus.Interface(systemd1, 'org.freedesktop.systemd1.Manager') In [5]: service = dbus.Interface(systemd1, 'org.freedesktop.systemd1.Service') In [6]: unit = dbus.Interface(systemd1, 'org.freedesktop.systemd1.Unit') In [7]: unit.ActiveState('openvpn.service') ----

跟着炎炎盐实践k8s---Kubernetes1.16.10 二进制高可用集群部署之遇到的问题

末鹿安然 提交于 2020-08-07 20:02:08
在安装kubernetes的过程中,会出现 failed to create kubelet: misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd" 原因: 文件驱动默认由systemd改成cgroupfs, 而我们安装的docker使用的文件驱动是systemd, 造成不一致, 导致镜像无法启动。 查看 docker info ... Cgroup Driver: systemd ... 现在有两种方式, 一种是修改docker, 另一种是修改kubelet 修改docker: /etc/docker/daemon.json,加入下面的内容: Copy { "exec-opts": ["native.cgroupdriver=systemd"] } 重启docker: systemctl restart docker systemctl status docker 或者 # vim /lib/systemd/system/docker.service # 将 --exec-opt native.cgroupdriver=systemd 修改为: # --exec-opt native.cgroupdriver=cgroupfs #

Prometheus监控神器-Alertmanager篇(1)

人盡茶涼 提交于 2020-08-07 16:20:30
本章节主要涵盖了Alertmanager的工作机制与配置文件的比较详细的知识内容,由浅入深的给大家讲解。 警报一直是整个监控系统中的重要组成部分,Prometheus监控系统中,采集与警报是分离的。警报规则在 Prometheus 定义,警报规则触发以后,才会将信息转发到给独立的组件 Alertmanager ,经过 Alertmanager r对警报的信息处理后,最终通过接收器发送给指定用户,另外在 Alertmanager 中没有通知组的概念,只能自己对软件重新Coding,或者使用第三方插件来实现。 注意,这个通知组不是Alertmanager中的group概念,下面会详细讲 Group ,不要混淆哦。 前面已经介绍过一些关于 Alertmanager 知识点,本章开始针通过安装 Alertmanager 组件,对配置文件做详细说明,同时介绍 Prometheus 的警报规则的定义,最后使用Email、Wechat(Robot)、Dingtalk(webhook)来接受警报通知。 Alertmanager工作机制 在Prometheus生态架构里,警报是由独立的俩部分组成,可以通过上图很清晰的了解到 Prometheus 的警报工作机制。其中 Prometheus 与 Alertmanager 是分离的俩个组件。我们使用Prometheus Server端通过静态或者动态配置

Discourse 443 端口问题

笑着哭i 提交于 2020-08-07 13:15:58
Discourse 的 443 端口需要开放吗? Discourse 默认会使用 SSL ,如果你的 Discourse 安装后,不能访问。 你需要启用 80 和 443 端口。 下面的命令将会打开你的 443 端口: firewall-cmd --zone=public --add-port=443/tcp --permanent 同时别忘了运行 firewall-cmd --reload 命令来让你的配置生效。 然后再运行 firewall-cmd --zone=public --query-port=443/tcp 如果返回的是 yes ,那么说明你的端口已经开放了。 [root@www ~]# firewall-cmd --zone=public --query-port=443/tcp yes 查看你服务器现在正在监听的端口请使用下面的命令: netstat -ntlp | grep LISTEN 你的服务器上可能回返回: [root@www ~]# netstat -ntlp | grep LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 675/sshd tcp6 0 0 :::22 :::* LISTEN 675/sshd tcp6 0 0 :::443 :::* LISTEN 49845/docker-proxy tcp6 0