Linux 配置开机自启动
systemd 自动启动 路径: /lib/systemd/system/hysteria.service
1234567891011[Unit]Description=HysteriaAfter=network.target network-online.target nss-lookup.target[Service]Restart=on-failureType=simpleExecStart=/usr/sbin/hysteria -config /etc/hysteria/config.json server[Install]WantedBy=multi-user.target
1234systemctl daemon-reload # 重新加载systemctl enable hysteria # 开机自启systemctl start hysteria # 启动systemctl status hysteria # 状态
使用 cat 生成配置文件1234567891011121314cat > /etc/systemd/system/onedrive.servi ...
yaml 还是 yml?
前言 yaml 的文件扩展名有两种:.yaml 和.yml。那么到底应该使用哪个后缀呢?
官方文档 根据 yaml.org 的官方文档,推荐我们使用.yaml。
历史原因 文件的扩展名对文件的内容没有任何关系或影响。可以在任何扩展名的文件中保存 YAML 内容:.yml、.yaml或其他任何文件。
YAML FAQ(相当少)建议使用 .yaml 而不是.yml,但由于历史原因,许多 Windows 程序员仍然害怕使用超过三个字符的扩展名,所以选择使用.yml。
所以,真正重要的是文件里面有什么,而不是它的扩展名是什么。
git 自动换行符
前言 最近在提交代码时,始终无法过 static analysis。最后发现由于使用了 BeyondCompare 比较更改配置,然后再 Window 提交的代码,提交代码时,没有检查换行符。
基本概念
回车 CR:将光标移动到当前行开头;
换行 LF:将光标“垂直”移动到下一行,并不改变光标水平位置。
CR、LF、CR/LF 为不同操作系统上使用的换行符:
平台
区别
Windows/DOS
采用 CR/LF 表示下一行
Unix/Linux
采用 LF 表示下一行
Mac OS 系统
采用 CR 表示下一行
Mac OS X 系统
采用 LF 表示下一行
解决方法 修改 git config autocrlf 配置:1git config --global core.autocrlf input
配置有以下区别:
core.autocrlf input:设置为 input,表示 git 在提交时转换为 LF,检出时不转换
core.autocrlf true:设置为 true,表示 git 在提交时转换为 ...
Linux 使用 adduser 与 useradd 添加普通用户的正确姿势
前言 在 Linux 操作系统中,添加用户可以使用 useradd 和 adduser 这两个命令。曾经在添加用户的实践中遇到过一些坑,比如使用 useradd 命令添加用户后无法正常使用,对 adduser 和 useradd 傻傻分不清楚。网上找到的相关内容很碎片化,初看会让人一脸懵逼,这促使我对这些知识进行了整理。
本文所有指令需要在 root 权限下执行。非 root 用户需要加 sudo 前缀,或使用 sudo -i 命令切换到 root 账户操作。
adduser 和 useradd 的区别 对于 Debian 或 Ubuntu ,主要的区别在使用方式上:
adduser是一个 perl 脚本,通过交互式菜单设定一些用户参数。在输入 adduser 用户名 后,会自动创建用户主目录(并复制 /etc/skel 目录下的文件)、指定系统 shell,提示输入用户密码,很简单的就添加了一个标准的普通用户。
useradd是一个指令,如果不使用任何选项,创建的用户将无密码、无主目录、没有指定 shell。如果你需要正常使用这个账户,就还需要设置密码、创建家目录等额外操 ...
Linux 中授予普通用户 sudo 权限的正确方法
前言 有时需要使用 root 权限,比如安装软件、启动服务等操作时就需要用到 sudo 命令来提升权限才能进行操作。而新添加的普通用户是没有权限进行 sudo 操作的,所以我们需要对普通用户授予 sudo 权限。授予 sudo 权限有三个方法,第一个是把用户添加到 sudo 用户组,第二个是修改 sudo 配置文件 (etc/sudoers),第三个是添加配置文件到 /etc/sudoers.d/ 目录中。选其中一个即可,推荐第三个方法。
安装 sudo如果系统中没有 sudo,需要先安装。
1234# Debianapt install sudo -y# Centosyum install sudo -y
添加用户到 sudo 用户组 以添加 enwaiax 这个用户到 sudo 用户组为例子,输入下面命令:
1usermod -aG sudo enwaiax
修改 sudo 配置文件 (etc/sudoers) 打开 sudo 配置文件
1visudo
以授予 enwaiax 这个用户 sudo 权限为例子,添加如下内容。
1enwaiax ALL=(ALL) ALL
...
总结:Python 中的异常处理
异常处理在任何一门编程语言里都是值得关注的一个话题,良好的异常处理可以让你的程序更加健壮,清晰的错误信息更能帮助你快速修复问题。在 Python 中,和不部分高级语言一样,使用了 try/except/finally 语句块来处理异常,如果你有其他编程语言的经验,实践起来并不难。
异常处理语句 try…excpet…finally实例代码12345678910111213141516171819202122232425262728293031323334353637383940def div(a, b): try: print(a / b) except ZeroDivisionError: print("Error: b should not be 0 !!") except Exception as e: print("Unexpected Error: {}".format(e)) else: print('Ru ...
虚拟化小结
1. 虚拟化的定义及分类 这一部分是对当期存在的虚拟机技术进行简单的总结与讲解,很多是一句而过的。其实每一个技术都可以重新写出一篇内容丰富的博客,但是每个技术不是本篇文章的重点,所以不对每一个技术进行详细论述。欢迎对每个技术进行评论与纠错。
1.1 虚拟化定义:虚拟化主要指的是特殊的技术,通过隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟机)(IBM 定义)。虚拟化为有效利用大型机的资源提供了技术支持。虚拟机技术也是多种多样,而可以虚拟的层次或者可虚拟的方面也是遍布从硬件到应用层整个计算机系统。如图片所示:
1.2 虚拟机分类:虚拟机的分类也是多种多样。可以通过是否在裸机上部署来分为面向主机的的虚拟机和面向裸机的虚拟机。面向主机的虚拟机是指的在一台已经安装操作系统的主机上安装虚拟机管理 (VMM) 程序,而面向裸机的是指在裸机上直接安装虚拟机管理程序,所有的虚拟机调用都是直接由虚拟机管理程序来负责,没有了操作系统这一步,所以这种方式在效率上要高于面向主机的。不过,比较流行的技术比如 vmware,Xen 都是面向主机的。
然后根据上面的图去分类的 ...
docker volume 的 rw 和 ro 区别
前言docker run 或者 docker-compose 可以挂载卷,并且可对 volume 设定读写权限
区别 不指定(默认)
文件:
宿主机 修改该文件后容器里面看不到变化
容器 里面修改该文件,宿主机也看不到变化
文件夹:不管是宿主机还是容器内 修改、新增、删除文件 都会相互同步
ro
文件:容器内不能修改,会提示 read-only
文件夹:容器内不能修改、新增、删除文件夹中的文件,会提示 read-only
rw
文件:不管是宿主机还是容器内修改,都会相互同步;但容器内不允许删除,会提示 Device or resource busy;宿主机删除文件,容器内的不会被同步
文件夹:不管是宿主机还是容器内修改、新增、删除文件,都会相互同步
注意 当容器内 uid 与宿主机 uid 不同时,可能存在挂载的容器内的文件读写权限问题
Docker 部署 webmail Rainloop
简介RainLoop 是基于 WEB 的邮件服务器系统是一个免费开源的 PHP Web Mail 客户端系统应用工具,可以用一个界面管理多个帐号,该程序拥有简洁的界面和全面的功能,支持 SMTP+IMAP。
用来配合 maddy 可以非常方便的搭建一套完整的带 webmail 的电子邮件服务。
步骤1. 下载 rainloop 安装包1234mkdir rainloop && cd rainloopwget -q https://www.rainloop.net/repository/webmail/rainloop-community-latest.zipunzip rainloop-community-latest.zip -d rainloopchmod -R 777 rainloop
2. 下载 docker-compose 文件1wget -q https://raw.githubusercontent.com/Chasing66/beautiful_docker/main/maddy/rainloop/docker-compose.yml
3. 下载 n ...
lsof 常用技巧
前言lsof: lists openfiles. 在 Unix 中一切(包括网络套接口)都是文件。
例如:
普通文件
目录
符号链接
面向块的设备文件
面向字符的设备文件
管道和命名管道
套接字
…
关键选项 理解一些关于 lsof 如何工作的关键性东西是很重要的。最重要的是,当你给它传递选项时,默认行为是对结果进行“或”运算。因此,如果你正是用 -i 来拉出一个端口列表,同时又用 -p 来拉出一个进程列表,那么默认情况下你会获得两者的结果。
下面的一些其它东西需要牢记:
默认 : 没有选项,lsof 列出活跃进程的所有打开文件
组合 : 可以将选项组合到一起,如 -abc,但要当心哪些选项需要参数
-a : 结果进行“与”运算(而不是“或”)
-l : 在输出显示用户 ID 而不是用户名
-h : 获得帮助
-t : 仅获取进程 ID
-U : 获取 UNIX 套接口地址
-F : 格式化输出结果,用于其它命令。可以通过多种方式格式化,如 -F pcfn(用于进程 id、命令名、文件描述符、文件名,并以空终止)
1. 获取网络信息 正如我所说的,我主要将 lsof 用于获 ...