Linux 日志系统简述

1. 序言 日志文件包含系统的运行信息,包括内核、服务、应用程序等的日志。日志在分析系统故障、排查应用问题等方面,有着至关重要的作用。 2. 哪些进程负责管理日志? 默认情况下,系统上有两个守护进程服务管理日志。journald和rsyslogd。 journald是systemd的一个组件,journald的负责收集日志,日志可以来自 Syslog日志 内核日志 初始化内存日志 启动日志 所有服务写到标准输出和标准错误的日志 journal收集并整理收到的日志,使其易于被使用。 有以下几点需要注意 默认情况下,journal的日志是不会持久化的。 journal的日志是二进制的格式,并不能使用文本查看工具,例如cat, 或者vim去分析。journal的日志需要用journalctl命令去读取。 journald会把日志写到一个socket中,rsyslog可以通过这个socket来获取日志,然后去写文件。 3. 日志文件文件位置 日志文件位置 /var/log/ 目录 4. 日志配置文件位置 /etc/rsyslog.conf rsyslogd配置文件 /etc/logrotate.conf 日志回滚的相关配置 /etc/systemd/journald.conf journald的配置文件 5. rsyslog.conf 5.1. 模块加载 注意 imjournal就是用来负责访问journal中的日志 imuxsock 提供本地日志输入支持,例如使用logger命令输入日志 $ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imjournal # provides access to the systemd journal 5.2. 过滤 5.2.1. 优先级过滤 **模式:FACILITY.**PRIORITY 设备(FACILITY): kern (0), user (1), mail (2), daemon (3), auth (4), syslog (5), lpr (6), news (7), cron (8), authpriv (9), ftp (10), and local0 through local7 (16 - 23)....

2022-10-26 08:44:12 · 3 min · Eddie Wang

Ubuntu 使用过程中遇到的问题以及解决方案

1. ubuntu wine 微信中文乱码 修改文件 /opt/deepinwine/tools/run.sh /opt/deepinwine/tools/run_v2.sh 将WINE_CMD那行中加入LC_ALL=zh_CN.UTF-8 WINE_CMD="LC_ALL=zh_CN.UTF-8 deepin-wine" 参考 https://gitee.com/wszqkzqk/deepin-wine-for-ubuntu 2. ubuntu 20.04 wine 微信 qq 截图时黑屏 之前截图都是好的的,不知道为什么,今天截图时,点击了微信的截图按钮后,屏幕除了状态栏,都变成黑色的了。 各种搜索引擎搜了一遍,没有发现解决方案。 最后决定思考最近对系统做了什么变更,最近我好像给系统安装了新的主题,然后在登录时,选择了新的主题,而没有选择默认的ubuntu主题。 在登录界面的右下角,有个按钮,点击之后,可以选择主题。 最近我都是选择其他的主题,没有选择默认的ubuntu主题,然后我就注销之后,重新在登录时选择默认的ubuntu主题后,再次打开微信截图,功能恢复正常。 所以说,既然选择ubuntu了,就没必要搞些花里胡哨的东西。ubuntu默认的主题挺好看的,而且支持自带主题的设置,就没必要再折腾了。 3. [open] ubuntu 20.04 锁屏后 解锁屏幕非常慢 super + l可以用来锁屏,锁屏之后屏幕变成黑屏。 黑屏之后,如果需要唤醒屏幕,可以随便在键盘上按键,去唤醒屏幕。但是这个唤醒的过程感觉很慢,基本上要随便按键接近十几秒,屏幕才能被点亮,网上搜了下,但是没有找到原因。 但是有个解决办法,就是在黑屏状态下,不要随便输入,而要输入正确的密码,然后按回车键, 这样会快很多。 也就是说,系统运行正常,可能是显示器的问题。 4. ubuntu 20.04 xorg 高cpu 桌面卡死 sudo systemctl restart gdm 5. ubuntu 状态栏显示网速 sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor sudo apt-get install indicator-sysmonitor 在任务启动中选择System Monitor 在配置中可以选择开机启动 在高级中可以设置显示哪些列, 我只关系网速,所以只写了{net} 6. 在命令行查看图片 实际上终端并不能显示图片,而是调用了外部的程序取显示图片。 eog 是 Eye Of Gnome 的缩写, 它其实是个图片查看器。...

2022-10-25 12:56:41 · 2 min · Eddie Wang

树莓派初始化配置

我已经装过几次树莓派的系统了,记录一些使用心得。 1. 选择哪个版本 最好用无桌面版,无桌面版更加稳定。我之前用过几次桌面版,桌面版存在以下问题。 使用偶尔感觉会卡 经常使用一天之后,第二天要重启系统。 2. 关于初始设置 默认的用户是 pi,默认的密码是raspberry 登录成功之后,sudo passwd pi 来修改pi用户的密码 登录之后,sudo passwd root 来设置root的用户密码 3. 开启ssh 远程登录服务 raspi-config 4. root用户ssh登录 默认树莓派是禁止使用root远程登录的,想要开启的话,需要编辑/etc/ssh/sshd_config文件,增加一行PermitRootLogin yes, 然后重启ssh服务 vi /etc/ssh/sshd_config PermitRootLogin yes sudo systemctl restart ssh // chong 5. 关于联网 联网有两个方案 用网线连接,简单方便,但是有条线子,总会把桌面搞得很乱 使用wifi连接,简单方便 使用wifi连接,一种方式是编辑配置文件,这个比较麻烦。我建议使用树莓派提供的raspi-config命令来设置wifi。 在命令行中输入:raspi-config, 可以看到如下界面 按下箭头,选择NetWork Options,按回车确认 进入网络设置后,按下箭头,选择N2 Wi-fi 然后就很简单了,输入wifi名称和wifi密码,最好你的wifi名称是英文的,出现中文会很尴尬的。 6. 如何找到树莓派的IP地址 某些情况下,树莓派在断电重启之后会获得新的IP地址。在没有显示器的情况下,如果找到树莓派的IP呢? 树莓派的MAC地址是:b8:27:eb:6c 开头 所以你只需要输入: arp -a 就会打印网络中的主机以及MAC地址,找以b8:e7:eb:6c开头的,很可能就是树莓派。 7. 设置清华镜像源 https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/

2022-10-25 12:12:05 · 1 min · Eddie Wang

Hugo Timezone没有设置, 导致页面无法渲染

写好了博客,但是没有在网页上渲染出来,岂不是很气人! 我的archtypes/default.md配置如下 --- title: "{{ replace .Name "-" " " | title }}" date: "{{ now.Format "2006-01-02 15:04:05" }}" draft: false --- 当使用 hugo new 创建一个文章的时候,有如下的头 --- title: "01: 学习建议" date: "2022-09-03 10:23:10" draft: false --- Hugo 默认采用的是 格林尼治平时 (GMT),比北京时间 (UTC+8) 晚了 8 个小时,Hugo 在生成静态页面的时候,不会生成超过当前时间的文章。 如果把北京时间当作格林尼治时间来计算,那么肯定还没有超过当前时间。 所以我们要给站点设置时区。 在config.yaml增加如下内容 timeZone: "Asia/Shanghai"

2022-09-03 10:20:48 · 1 min · Eddie Wang

读书笔记 - Packet Guide to VoIP

书名 Packet Guide to Voip over IP 作者 Bruce Hartpence 状态 已读完 简介 Go under the hood of an operating Voice over IP network, and build your knowledge of protocol …. 读后感 新技术出现的时机 Pulling the trigger early might put you at risk of making the wrong decision in terms of vendor or protocol. Adopting late might put you behind the competition or make you rush to deploy a system that is not well understood by the local staff....

2022-07-18 20:05:01 · 1 min · Eddie Wang

中途多语言适配

1. 前提说明 项目已经处于维护期 项目一开始并没有考虑多语言,所以很多地方都是写死的中文 现在要给这个项目添加多语言适配 2. 工具选择 https://www.npmjs.com/package/i18n https://www.npmjs.com/package/vue-i18n 3. 难点 项目很大,中文可能存在于各种文件中,例如html, vue, js, typescript等等, 人工查找不现实 所以首先第一步是要找出所有的中文语句 4. 让文本飞 安装ripgrep apt-get instal ripgrep 搜索所有包含中文的代码: rg -e '[\p{Han}]' > han.all.md 给所有包含中文的代码,按照文件名,和出现的次数排序: cat han.all.md | awk -F: '{print $1}' | uniq -c | sort -nr > stat.han.md 这一步主要是看看哪些文件包含的中文比较多 按照中文的语句,排序并统计出现的次数: cat han.all.md |rg -o -e '([\p{Han}]+)' | sort | uniq -c | sort -nr > word.han.md 经过上面4步,基本上可以定位出哪些代码中包含中文,中文的语句有哪些。

2022-07-12 22:54:55 · 1 min · Eddie Wang

0 A.D. 一款开发了21年还未release的游戏

1. 我为什么会知道0 A.D. 这款游戏? 最近切换到windows开发,用了scoop这个包管理工具来安装软件,随便逛逛的时候,发现scoop还可以用来安装游戏,然后我就在里面看了一下,然后排名第一的是一个名叫 0 A.D.的游戏,然后我就安装,并试玩了一下。 2. 0 A.D. 这个名字是啥意思? 基督教称耶稣诞生的那年为公元元年, A.D. 就是Anno Domini(A.D.)(拉丁)的缩写,对应的公元前就是而在耶稣诞生之前,称为B.C. Before Christ(B.C.). 我们现在的阳历,例如今年是2022年,这其实就是公元2022年。对应的公元元年,对中国来说,大致在西汉年间。 所以 0 A.D. 其实的意思就是一个不存在的元年。 “0 A.D.” is a time period that never actually existed: 3. 0 A.D. 是什么类型的游戏? 如果你玩过红警,0 A.D.的有点像红警。 官方的介绍0AD是一个基于历史的实时策略游戏。 如果你玩过部落冲突,0AD其实也有点类似部落冲突。 4. 0 A.D. 有什么特点? 跨平台, windows, mac, linux都可以玩 免费 历史悠久,项目开始于2001 还处于开发阶段 可玩性还不错 基于真实历史,所以玩游戏的时候,也是能够学点历史的。里面有是14个文明。 5. 有哪些玩法 单机和AI对战 在线组队玩 6. FAQ 如何设置中文界面 默认的游戏不带中文语言的,实际上它是有中文的语言包的,可以参考 参考 https://baike.baidu.com/item/%E5%85%AC%E5%85%83/17855

2022-07-12 19:32:28 · 1 min · Eddie Wang

请问nginx 能否根据 frag 片段 进行路径转发?

HTTP URL的格式复习 ://:@:/;?#frag scheme 协议, 常见的有http, https, file, ftp等 : 用户名和密码 host 主机或者IP port 端口号 path 路径 params 参数 用的比较少 query 查询参数 frag 片段,资源的一部分,浏览器不会把这部分发给服务端 关于frag片段 浏览器加载一个网页,网页可能有很多章节的内容,frag片段可以告诉浏览器,应该将某个特定的点显示在浏览器中。 例如 https://github.com/wangduanduan/jsplumb-chinese-tutorial/blob/master/api/anchors.js#L18 这里的#L8就是一个frag片段, 当浏览器打开这个页面的时,就会跳到对应的行 在网络面板,也可以看到,实际上浏览器发出的请求,也没有带有frag参数 Vue 在Vue中,默认的路由就是这种frag片段。 这种路由只对浏览器有效,并不会发送到服务端。 所以在一个单页应用中,服务端是无法根据URL知道用户访问的是什么页面的。 所以实际上nginx无法根据frag片段进行拦截。 nginx路径拦截 location [modifier] [URI] { ... ... } modifier = 完全匹配 ^~ 正则匹配,并且必须是以特定的URL开头 ~ 正则匹配,且大小写敏感 ~* 正则匹配,大小写不敏感 nginx路径匹配规则 首先使完全匹配,一旦匹配,则匹配结束,进行后续数据处理 完全匹配无法找到,则进行最长URL匹配,类似 ^~ 最长匹配找不到,则按照 ~或者~*的方式匹配 最后按照 / 的默认匹配

2022-07-09 17:13:13 · 1 min · Eddie Wang

windows 上的命令行体验

我已经有5年没有用过windows了,再次在windows上搞开发,发现了windows对于开发者来说,友好了不少。 首先是windows terminal, 这个终端做的还不错。 其次是一些常用的命令,比如说ssh, scp等,都已经默认附带了,不用再安装。 还有包管理工具scoop, 命令行提示工具 oh-my-posh, 以及powershell 7 加载一起,基本可以迁移80%左右的linux上的开发环境。 特别要说明一下scoop, 这个包管理工具,我安装了在linux上常用的一些软件。 包括有以下的软件,而且软件的版本都还蛮新的。 0ad 0.0.25b games 7zip 22.00 main curl 7.84.0_4 main curlie 1.6.9 main diff-so-fancy 1.4.3 main duf 0.8.1 main everything gawk 5.1.1 main git 2.37.0.windows.1 main git-aliases 0.3.5 extras git-chglog 0.15.1 main gzip 1.3.12 main hostctl 1.1.2 main hugo 0.101.0 main jq 1.6 main klogg 22.06.0.1289 extras make 4.3 main neofetch 7.1.0 main neovim 0.7.2 main netcat 1....

2022-07-09 12:43:14 · 1 min · Eddie Wang

powershell oh-my-posh 加载数据太慢

每次打开新的标签页,Powershell 都会输出下面的代码 Loading personal and system profiles took 3566ms. 时间不固定,有时1s到10s都可能有,时间不固定。 这个加载速度是非常慢的。 然后我打开一个非oh-my-posh的窗口,输入 oh-my-posh debug 看到其中几行日志: 2022/07/09 12:20:23 error: HTTPRequest Get "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/v8.15.0/themes/default.omp.json": context deadline exceeded 2022/07/09 12:20:23 HTTPRequest duration: 5.0072715s, args: https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/v8.15.0/themes/default.omp.json 2022/07/09 12:20:23 downloadConfig duration: 5.0072715s, args: https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/v8.15.0/themes/default.omp.json 2022/07/09 12:20:23 resolveConfigPath duration: 5.0072715s, args: 2022/07/09 12:20:23 Init duration: 5.0072715s, args: 好家伙,原来每次启动,oh-my-posh还去github上下载了一个文件。 因为下载文件而拖慢了整个启动过程。 然后在github issue上倒找:https://github.com/JanDeDobbeleer/oh-my-posh/issues/2251 oh-my-posh init pwsh –config ~/default.omp.json 其中关键一点是启动oh-my-posh的时候,如果不用–config配置默认的文件,oh-my-posh就回去下载默认的配置文件。 所以问题就好解决了。 首先下载https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/v8.15.0/themes/default.omp.json 这个文件,然后再保存到用户的家目录里面。 然后打开terminal, 输入: code $profile 前提是你的电脑上要装过vscode, 然后给默认的profile加上–config参数,试了一下,问题解决。 oh-my-posh init pwsh --config ~/default....

2022-07-09 12:31:09 · 1 min · Eddie Wang