1. Made sure everything was updated and did; freebsd-update fetch & freebsd-update install (nothing to do becuase I was up to date).
2. freebsd-update -r 14.1-RELEASE upgrade
3. freebsd-update install
4. shutdown -r now
5. freebsd-update install
6. shutdown -r now (maybe overkill)
7. pkg-static upgrade -f
8. freebsd-update install (nothing to do)
9. shutdown -r now

freebsd-version -kru gave me;
14.1-RELEASE
14.0-RELEASE
14.1-RELEASE

Then I did freebsd-update fetch & freebsd-update install and the system reverted back to 14.0
来自:https://forums.freebsd.org/threads/upgrading-to-14-1.93700/

实践如下:
freebsd-update fetch & freebsd-update install

[root@core ~]# sudo freebsd-update install
No updates are available to install.
Run '/usr/sbin/freebsd-update fetch' first.
[root@core ~]# uname  -rasp
FreeBSD core.hatch.l.lw4.cn 14.0-RELEASE-p9 FreeBSD 14.0-RELEASE-p9 #0: Tue Aug  6 19:52:06 UTC 2024     root@amd64-builder.daemonology.net:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64 amd64
[root@core ~]# freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching metadata signature for 14.0-RELEASE from update1.freebsd.org... done.
Fetching metadata index... done.
Inspecting system... done.
Preparing to download files... done.

No updates needed to update system to 14.0-RELEASE-p9.
You have new mail in /var/mail/root
[root@core ~]# freebsd-update -r 14.1-RELEASE upgrade
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching metadata signature for 14.0-RELEASE from update1.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata files... done.
Inspecting system... done.

The following components of FreeBSD seem to be installed:
kernel/generic kernel/generic-dbg src/src world/base world/lib32

The following components of FreeBSD do not seem to be installed:
world/base-dbg world/lib32-dbg

Does this look reasonable (y/n)? y

Fetching metadata signature for 14.1-RELEASE from update1.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Fetching 1 metadata files...
6490....6500....6510....6520....6530....6540....6550....6560....6570....6580....6590....6600....6610....6620....6630....6640....6650....6660....6670....6680....6690....6700....6710....6720....6730....6740....6750....6760....6770....6780....6790....6800....6810....6820....6830....6840....6850....6860....6870....6880....6890....6900....6910....6920....6930....6940....6950.Timeout, server 10.10.0.1 not responding.


Freebsd升级到这一步,不想升级了,清理掉产生的内容,怎么弄?
freebsd-update rollback
rm -rf /var/db/freebsd-update/*
rm -rf /usr/freebsd-update/*

远程桌面连接linux服务器时,画面突然放大,且画面随光标移动。
解决方法
Alt + 鼠标滑轮
Alt + 鼠标滑轮可以进行画面的放大、缩小。有的时候不注意按到键盘,可能出现这种情况。特此记录。
摘自:https://blog.csdn.net/ykwjt/article/details/127451351

macbook下面是option+鼠标滑轮(苹果鼠标二手指前后移动=远程屏幕放大缩小)

cat haiyangguan.sh
#!/bin/bash

# 获取当前时间戳(毫秒)
current_timestamp=$(($(date +%s%N)/1000000))

# 定义curl命令,使用当前时间戳替换原时间戳
curl_command="curl -H 'Host: ocean.shuziwenlv.com' -H 'content-type: application/json; charset=UTF-8' -H 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.49(0x18003133) NetType/WIFI Language/zh_CN' -H 'Referer: https://servicewechat.com/wx49d59947448fc8a7/40/page-frame.html' --data-binary '{\"header\":{\"userNo\":\"\",\"serviceName\":\"CreateOrder\",\"version\":\"v1.0\",\"token\":\"\",\"cacheTime\":0,\"timestamp\":$current_timestamp},\"body\":\"JTdCJTIyZGF0ZSUyMiUzQSUyMjIwMjQtMDYtMDklMjIlMkMlMjJzdHJhdGVneUlkJTIyJTNBJTIyMTAwMDAwMDI1NyUyMiUyQyUyMnByb2plY3RObyUyMiUzQSUyMjEwMDAwMDA2NjYlMjIlMkMlMjJzdWJQcm9qZWN0Tm8lMjIlM0ExMDAwMDAwNjY2JTJDJTIyb3BlbklkJTIyJTNBJTIyb0NhdTU2NGYzTDluYjRIdGlPN1RfOUd6WGExNCUyMiUyQyUyMmFwcE5vJTIyJTNBJTIyMTAlMjIlMkMlMjJ0aWNrZXRMaXN0JTIyJTNBJTVCJTdCJTIyc3R5bGVObyUyMiUzQSUyMjEwMDAwMDEwMDAlMjIlMkMlMjJjb3VudCUyMiUzQTMlMkMlMjJ0b3VyaXN0TGlzdCUyMiUzQSU1QiU3QiUyMm5hbWUlMjIlM0ElMjIlRTUlQkQlQTYlRTYlOTklOTMlRTglOEIlQjklMjIlMkMlMjJtb2JpbGVObyUyMiUzQSUyMjE4NjEwODE1NzA4JTIyJTJDJTIyY2FyZFR5cGUlMjIlM0ElMjIxMCUyMiUyQyUyMmNhcmRObyUyMiUzQSUyMjE1MjMyNjE5ODUwMTE0MzU4OSUyMiUyQyUyMnNlYXRObyUyMiUzQSUyMiUyMiUyQyUyMnNlYXRtYXBObyUyMiUzQSUyMiUyMiUyQyUyMnRpZHglMjIlM0ExJTdEJTJDJTdCJTIybmFtZSUyMiUzQSUyMiVFNSU5MCU5MSVFNCVCOCU5QyUyMiUyQyUyMm1vYmlsZU5vJTIyJTNBJTIyMTg4MTA3NjUxMDglMjIlMkMlMjJjYXJkVHlwZSUyMiUzQSUyMjEwJTIyJTJDJTIyY2FyZE5vJTIyJTNBJTIyNTAwMjMwMTk4NTEwMDI3MTFYJTIyJTJDJTIyc2VhdE5vJTIyJTNBJTIyJTIyJTJDJTIyc2VhdG1hcE5vJTIyJTNBJTIyJTIyJTJDJTIydGlkeCUyMiUzQTIlN0QlMkMlN0IlMjJuYW1lJTIyJTNBJTIyJUU1JTkwJTkxJUU2JUI1JUE5JUU5JUI4JUEzJTIyJTJDJTIybW9iaWxlTm8lMjIlM0ElMjIxMzI2MDE2ODA4NiUyMiUyQyUyMmNhcmRUeXBlJTIyJTNBJTIyMTAlMjIlMkMlMjJjYXJkTm8lMjIlM0ElMjIxMTAxMTIyMDE5MTAyNDQ2MTklMjIlMkMlMjJzZWF0Tm8lMjIlM0ElMjIlMjIlMkMlMjJzZWF0bWFwTm8lMjIlM0ElMjIlMjIlMkMlMjJ0aWR4JTIyJTNBMyU3RCU1RCU3RCU1RCU3RA==\"}' --compressed 'https://ocean.shuziwenlv.com/MiniProgram/ProcessRequest'"

# 执行curl命令
eval $curl_command


#cat run_haiyangguan.sh




^M  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0^M100  1726  100   244  100  1482    829   5039 --:--:-- --:--:-- --:--:--  5058
{"header":{"status":999,"timecost":19,"msg":"剩余库存不足","serviceName":"CreateOrder","serviceUnavailable":false},"body":""}  % Total    % Received % Xferd  Average Speed   Tim
e    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
^M  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0^M100  1482    0     0  100  1482      0   1225  0:00:01  0:00:01 --:--:--  1225^M100  1798  100
  316  100  1482    156    734  0:00:02  0:00:02 --:--:--   734^M100  1798  100   316  100  1482    156    734  0:00:02  0:00:02 --:--:--   734
{"header":{"status":200,"timecost":1556,"msg":"操作成功","serviceName":"CreateOrder","serviceUnavailable":false},"body":"JTdiJTIybGF1bmNoJTIyJTNhZmFsc2UlMmMlMjJvcmRlck5vJTIyJTNh
JTIyMjAwMDUzNTg5OCUyMiU3ZA=="}  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
^M  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0^M100  1751  100   269  100  1482    535   2948 --:--:-- --:--:-- --:--:--  2946^M100  1751  100
  269  100  1482    534   2946 --:--:-- --:--:-- --:--:--  2946
{"header":{"status":999,"timecost":27,"msg":"证件:152**3589请勿重复预定!","serviceName":"CreateOrder","serviceUnavailable":false},"body":""}  % Total    % Received % Xferd  Aver
age Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
^M  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0^M100  1751  100   269  100  1482    928   5115 --:--:-- --:--:-- --:--:--  5128
{"header":{"status":999,"timecost":18,"msg":"证件:152**3589请勿重复预定!","serviceName":"CreateOrder","serviceUnavailable":false},"body":""}  % Total    % Received % Xferd  Aver
age Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
^M  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0^M100  1751  100   269  100  1482    547   3015 --:--:-- --:--:-- --:--:--  3018
{"header":{"status":999,"timecost":17,"msg":"证件:152**3589请勿重复预定!","serviceName":"CreateOrder","serviceUnavailable":false},"body":""}  % Total    % Received % Xferd  Aver




二次升级:
curl -H 'Host: ocean.shuziwenlv.com' -H 'content-type: application/json; charset=UTF-8' -H 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.49(0x18003133) NetType/WIFI Language/zh_CN' -H 'Referer: https://servicewechat.com/wx49d59947448fc8a7/40/page-frame.html' --data-binary '{"header":{"userNo":"","serviceName":"CreateOrder","version":"v1.0","token":"","cacheTime":0,"timestamp":1724805497445},"body":"JTdCJTIyZGF0ZSUyMiUzQSUyMjIwMjQtMDktMDElMjIlMkMlMjJzdHJhdGVneUlkJTIyJTNBJTIyMTAwMDAwMDI1NyUyMiUyQyUyMnByb2plY3RObyUyMiUzQSUyMjEwMDAwMDA2NjYlMjIlMkMlMjJzdWJQcm9qZWN0Tm8lMjIlM0ExMDAwMDAwNjY2JTJDJTIyb3BlbklkJTIyJTNBJTIyb0NhdTU2NGYzTDluYjRIdGlPN1RfOUd6WGExNCUyMiUyQyUyMmFwcE5vJTIyJTNBJTIyMTAlMjIlMkMlMjJ0aWNrZXRMaXN0JTIyJTNBJTVCJTdCJTIyc3R5bGVObyUyMiUzQSUyMjEwMDAwMDEwMDAlMjIlMkMlMjJjb3VudCUyMiUzQTQlMkMlMjJ0b3VyaXN0TGlzdCUyMiUzQSU1QiU3QiUyMm5hbWUlMjIlM0ElMjIlRTUlQkQlQTYlRTYlOTklOTMlRTglOEIlQjklMjIlMkMlMjJtb2JpbGVObyUyMiUzQSUyMjE4NjEwODE1NzA4JTIyJTJDJTIyY2FyZFR5cGUlMjIlM0ElMjIxMCUyMiUyQyUyMmNhcmRObyUyMiUzQSUyMjE1MjMyNjE5ODUwMTE0MzU4OSUyMiUyQyUyMnNlYXRObyUyMiUzQSUyMiUyMiUyQyUyMnNlYXRtYXBObyUyMiUzQSUyMiUyMiUyQyUyMnRpZHglMjIlM0ExJTdEJTJDJTdCJTIybmFtZSUyMiUzQSUyMiVFNSU5MCU5MSVFNCVCOCU5QyUyMiUyQyUyMm1vYmlsZU5vJTIyJTNBJTIyMTg4MTA3NjUxMDglMjIlMkMlMjJjYXJkVHlwZSUyMiUzQSUyMjEwJTIyJTJDJTIyY2FyZE5vJTIyJTNBJTIyNTAwMjMwMTk4NTEwMDI3MTFYJTIyJTJDJTIyc2VhdE5vJTIyJTNBJTIyJTIyJTJDJTIyc2VhdG1hcE5vJTIyJTNBJTIyJTIyJTJDJTIydGlkeCUyMiUzQTIlN0QlMkMlN0IlMjJuYW1lJTIyJTNBJTIyJUU1JTkwJTkxJUU2JUI1JUE5JUU5JUI4JUEzJTIyJTJDJTIybW9iaWxlTm8lMjIlM0ElMjIxMzI2MDE2ODA4NiUyMiUyQyUyMmNhcmRUeXBlJTIyJTNBJTIyMTAlMjIlMkMlMjJjYXJkTm8lMjIlM0ElMjIxMTAxMTIyMDE5MTAyNDQ2MTklMjIlMkMlMjJzZWF0Tm8lMjIlM0ElMjIlMjIlMkMlMjJzZWF0bWFwTm8lMjIlM0ElMjIlMjIlMkMlMjJ0aWR4JTIyJTNBMyU3RCUyQyU3QiUyMm5hbWUlMjIlM0ElMjIlRTUlOTAlOTElRTUlQUUlODclMjIlMkMlMjJtb2JpbGVObyUyMiUzQSUyMjE2NjIzMTYwOTAyJTIyJTJDJTIyY2FyZFR5cGUlMjIlM0ElMjIxMCUyMiUyQyUyMmNhcmRObyUyMiUzQSUyMjUwMDIzMDIwMDQwOTAyNzExNSUyMiUyQyUyMnNlYXRObyUyMiUzQSUyMiUyMiUyQyUyMnNlYXRtYXBObyUyMiUzQSUyMiUyMiUyQyUyMnRpZHglMjIlM0E0JTdEJTVEJTdEJTVEJTdECg=="}' --compressed https://ocean.shuziwenlv.com/MiniProgram/ProcessRequest
{"header":{"status":301,"timecost":0,"msg":"请求header传入的方法名称不正确","serviceName":"CreateOrder","serviceUnavailable":false},"body":""}


cat haiyangguan.sh
#!/bin/bash

# 获取当前时间戳(毫秒)
current_timestamp=$(($(date +%s%N)/1000000))

# 定义curl命令,使用当前时间戳替换原时间戳
curl_command="curl -H 'Host: ocean.shuziwenlv.com' -H 'content-type: application/json; charset=UTF-8' -H 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605
.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.49(0x18003133) NetType/WIFI Language/zh_CN' -H 'Referer: https://servicewechat.com/wx49d59947448fc8a7/40/page-frame.html' --data-bi
nary '{\"header\":{\"userNo\":\"\",\"serviceName\":\"CreateOrder\",\"version\":\"v1.0\",\"token\":\"\",\"cacheTime\":0,\"timestamp\":$current_timestamp},\"body\":\"JTdCJTIyZGF0ZSUyMiUzQSUyMj
IwMjQtMDktMDElMjIlMkMlMjJzdHJhdGVneUlkJTIyJTNBJTIyMTAwMDAwMDI1NyUyMiUyQyUyMnByb2plY3RObyUyMiUzQSUyMjEwMDAwMDA2NjYlMjIlMkMlMjJzdWJQcm9qZWN0Tm8lMjIlM0ExMDAwMDAwNjY2JTJDJTIyb3BlbklkJTIyJTNBJTIy
b0NhdTU2NGYzTDluYjRIdGlPN1RfOUd6WGExNCUyMiUyQyUyMmFwcE5vJTIyJTNBJTIyMTAlMjIlMkMlMjJ0aWNrZXRMaXN0JTIyJTNBJTVCJTdCJTIyc3R5bGVObyUyMiUzQSUyMjEwMDAwMDEwMDAlMjIlMkMlMjJjb3VudCUyMiUzQTQlMkMlMjJ0b3
VyaXN0TGlzdCUyMiUzQSU1QiU3QiUyMm5hbWUlMjIlM0ElMjIlRTUlQkQlQTYlRTYlOTklOTMlRTglOEIlQjklMjIlMkMlMjJtb2JpbGVObyUyMiUzQSUyMjE4NjEwODE1NzA4JTIyJTJDJTIyY2FyZFR5cGUlMjIlM0ElMjIxMCUyMiUyQyUyMmNhcmRO
byUyMiUzQSUyMjE1MjMyNjE5ODUwMTE0MzU4OSUyMiUyQyUyMnNlYXRObyUyMiUzQSUyMiUyMiUyQyUyMnNlYXRtYXBObyUyMiUzQSUyMiUyMiUyQyUyMnRpZHglMjIlM0ExJTdEJTJDJTdCJTIybmFtZSUyMiUzQSUyMiVFNSU5MCU5MSVFNCVCOCU5Qy
UyMiUyQyUyMm1vYmlsZU5vJTIyJTNBJTIyMTg4MTA3NjUxMDglMjIlMkMlMjJjYXJkVHlwZSUyMiUzQSUyMjEwJTIyJTJDJTIyY2FyZE5vJTIyJTNBJTIyNTAwMjMwMTk4NTEwMDI3MTFYJTIyJTJDJTIyc2VhdE5vJTIyJTNBJTIyJTIyJTJDJTIyc2Vh
dG1hcE5vJTIyJTNBJTIyJTIyJTJDJTIydGlkeCUyMiUzQTIlN0QlMkMlN0IlMjJuYW1lJTIyJTNBJTIyJUU1JTkwJTkxJUU2JUI1JUE5JUU5JUI4JUEzJTIyJTJDJTIybW9iaWxlTm8lMjIlM0ElMjIxMzI2MDE2ODA4NiUyMiUyQyUyMmNhcmRUeXBlJT
IyJTNBJTIyMTAlMjIlMkMlMjJjYXJkTm8lMjIlM0ElMjIxMTAxMTIyMDE5MTAyNDQ2MTklMjIlMkMlMjJzZWF0Tm8lMjIlM0ElMjIlMjIlMkMlMjJzZWF0bWFwTm8lMjIlM0ElMjIlMjIlMkMlMjJ0aWR4JTIyJTNBMyU3RCUyQyU3QiUyMm5hbWUlMjIl
M0ElMjIlRTUlOTAlOTElRTUlQUUlODclMjIlMkMlMjJtb2JpbGVObyUyMiUzQSUyMjE2NjIzMTYwOTAyJTIyJTJDJTIyY2FyZFR5cGUlMjIlM0ElMjIxMCUyMiUyQyUyMmNhcmRObyUyMiUzQSUyMjUwMDIzMDIwMDQwOTAyNzExNSUyMiUyQyUyMnNlYX
RObyUyMiUzQSUyMiUyMiUyQyUyMnNlYXRtYXBObyUyMiUzQSUyMiUyMiUyQyUyMnRpZHglMjIlM0E0JTdEJTVEJTdEJTVEJTdECg==\"}' --compressed 'https://ocean.shuziwenlv.com/MiniProgram/ProcessRequest'"

# 执行curl命令
eval $curl_command



URLEncode后再Base64编码传输到服务器端的研究:
上面将URL的内容还成成可读的内容,专业术语叫什么来着。
同样,反过来将可读内容urlencode成传输内容的术语叫啥?
将URL编码的内容还原成可读内容的过程称为URL解码(URL Decoding)。相反,将可读内容转换为URL编码格式的过程称为URL编码(URL Encoding)。
以下是使用PHP和Go语言进行URL编码(URL Encoding)和解码(URL Decoding)的示例代码。

### 1. PHP

#### URL解码(URL Decoding)
```php
<?php
// URL编码后的JSON
$urlEncoded = "%7B%22date%22%3A%222024-09-01%22%2C%22strategyId%22%3A%221000000257%22%2C%22projectNo%22%3A%221000000666%22%2C%22subProjectNo%22%3A1000000666%2C%22openId%22%3A%22oCau564f3L9nb4HtiO7T_9GzXa14%22%2C%22appNo%22%3A%2210%22%2C%22ticketList%22%3A%5B%7B%22styleNo%22%3A%221000001000%22%2C%22count%22%3A4%2C%22touristList%22%3A%5B%7B%22name%22%3A%22%E5%BD%A6%E6%99%93%E8%8B%B9%22%2C%22mobileNo%22%3A%2218610815708%22%2C%22cardType%22%3A%2210%22%2C%22cardNo%22%3A%22152326198501143589%22%2C%22seatNo%22%3A%22%22%2C%22seatmapNo%22%3A%22%22%2C%22tidx%22%3A1%7D%2C%7B%22name%22%3A%22%E5%90%91%E4%B8%9C%22%2C%22mobileNo%22%3A%2218810765108%22%2C%22cardType%22%3A%2210%22%2C%22cardNo%22%3A%2250023019851002711X%22%2C%22seatNo%22%3A%22%22%2C%22seatmapNo%22%3A%22%22%2C%22tidx%22%3A2%7D%2C%7B%22name%22%3A%22%E5%90%91%E6%B5%A9%E9%B8%A3%22%2C%22mobileNo%22%3A%2213260168086%22%2C%22cardType%22%3A%2210%22%2C%22cardNo%22%3A%22110112201910244619%22%2C%22seatNo%22%3A%22%22%2C%22seatmapNo%22%3A%22%22%2C%22tidx%22%3A3%7D%2C%7B%22name%22%3A%22%E5%90%91%E5%AE%87%22%2C%22mobileNo%22%3A%2216623160902%22%2C%22cardType%22%3A%2210%22%2C%22cardNo%22%3A%22500230200409027115%22%2C%22seatNo%22%3A%22%22%2C%22seatmapNo%22%3A%22%22%2C%22tidx%22%3A4%7D%5D%7D%5D%7D";

// 进行URL解码
$decoded = urldecode($urlEncoded);

// 打印解码后的JSON
echo $decoded;
?>
```

#### URL编码(URL Encoding)
```php
<?php
// 明文JSON内容
$json = '{
    "date": "2024-09-01",
    "strategyId": "1000000257",
    "projectNo": "1000000666",
    "subProjectNo": 1000000666,
    "openId": "oCau564f3L9nb4HtiO7T_9GzXa14",
    "appNo": "10",
    "ticketList": [
        {
            "styleNo": "1000001000",
            "count": 4,
            "touristList": [
                {
                    "name": "彦晓苹",
                    "mobileNo": "18610815708",
                    "cardType": "10",
                    "cardNo": "152326198501143589",
                    "seatNo": "",
                    "seatmapNo": "",
                    "tidx": 1
                },
                {
                    "name": "向东",
                    "mobileNo": "18810765108",
                    "cardType": "10",
                    "cardNo": "50023019851002711X",
                    "seatNo": "",
                    "seatmapNo": "",
                    "tidx": 2
                },
                {
                    "name": "向浩鸣",
                    "mobileNo": "13260168086",
                    "cardType": "10",
                    "cardNo": "110112201910244619",
                    "seatNo": "",
                    "seatmapNo": "",
                    "tidx": 3
                },
                {
                    "name": "向宇",
                    "mobileNo": "16623160902",
                    "cardType": "10",
                    "cardNo": "500230200409027115",
                    "seatNo": "",
                    "seatmapNo": "",
                    "tidx": 4
                }
            ]
        }
    ]
}';

// 进行URL编码
$encoded = urlencode($json);

// 打印编码后的URL格式内容
echo $encoded;
?>
```

### 2. Go

#### URL解码(URL Decoding)
```go
package main

import (
  "fmt"
  "net/url"
)

func main() {
  // URL编码后的JSON
  urlEncoded := "%7B%22date%22%3A%222024-09-01%22%2C%22strategyId%22%3A%221000000257%22%2C%22projectNo%22%3A%221000000666%22%2C%22subProjectNo%22%3A1000000666%2C%22openId%22%3A%22oCau564f3L9nb4HtiO7T_9GzXa14%22%2C%22appNo%22%3A%2210%22%2C%22ticketList%22%3A%5B%7B%22styleNo%22%3A%221000001000%22%2C%22count%22%3A4%2C%22touristList%22%3A%5B%7B%22name%22%3A%22%E5%BD%A6%E6%99%93%E8%8B%B9%22%2C%22mobileNo%22%3A%2218610815708%22%2C%22cardType%22%3A%2210%22%2C%22cardNo%22%3A%22152326198501143589%22%2C%22seatNo%22%3A%22%22%2C%22seatmapNo%22%3A%22%22%2C%22tidx%22%3A1%7D%2C%7B%22name%22%3A%22%E5%90%91%E4%B8%9C%22%2C%22mobileNo%22%3A%2218810765108%22%2C%22cardType%22%3A%2210%22%2C%22cardNo%22%3A%2250023019851002711X%22%2C%22seatNo%22%3A%22%22%2C%22seatmapNo%22%3A%22%22%2C%22tidx%22%3A2%7D%2C%7B%22name%22%3A%22%E5%90%91%E6%B5%A9%E9%B8%A3%22%2C%22mobileNo%22%3A%2213260168086%22%2C%22cardType%22%3A%2210%22%2C%22cardNo%22%3A%22110112201910244619%22%2C%22seatNo%22%3A%22%22%2C%22seatmapNo%22%3A%22%22%2C%22tidx%22%3A3%7D%2C%7B%22name%22%3A%22%E5%90%91%E5%AE%87%22%2C%22mobileNo%22%3A%2216623160902%22%2C%22cardType%22%3A%2210%22%2C%22cardNo%22%3A%22500230200409027115%22%2C%22
用PHP和GO语言,分别将上面的JSON进行解码和编码,学习一下,谢谢。


问题:
为何要进行URL编码?以及它对哪些字符作了转化,转化的目的是什么?

回答:
URL编码(URL Encoding)的主要目的是确保在URL中传输数据时,字符不会被错误地解释或丢失。URL中的某些字符具有特殊的意义(如`?`, `&`, `/`, `=`等),它们被用来分隔URL的不同部分(例如查询参数),因此如果这些字符出现在数据中(如查询字符串、路径参数或表单数据),它们可能会导致URL解析错误。URL编码通过将这些字符转换为特定的编码形式来避免此类问题。

### 为什么进行URL编码?

1. **避免歧义**:URL中的特殊字符(如`?`, `&`, `/`等)可能会与实际数据中的字符混淆,导致URL解析错误。URL编码能够将这些特殊字符转换为不具有特殊意义的形式,以避免歧义。

2. **确保兼容性**:某些字符在URL中是非法的(如空格、引号、尖括号等),或者某些字符在不同的浏览器和服务器之间的处理可能不同。通过URL编码,可以确保这些字符在所有情况下都能正确传输和解释。

3. **编码非ASCII字符**:URL通常只能使用ASCII字符集,因此需要将非ASCII字符(如中文、日文等)编码为ASCII字符,以确保它们能在URL中被正确传输。

### URL编码对哪些字符进行了转化?

在URL编码中,某些字符会被转换为以`%`开头的三字符表示形式,其中后两字符是该字符的ASCII值的十六进制表示。以下是常见的字符及其URL编码后的形式:

- **空格(Space)**: `%20`
- **双引号(")**: `%22`
- **#号**: `%23`
- **$符号**: `%24`
- **%符号**: `%25`
- **&符号**: `%26`
- **'符号**: `%27`
- **(符号**: `%28`
- **)符号**: `%29`
- **+号**: `%2B`
- **,符号**: `%2C`
- **/符号**: `%2F`
- **:符号**: `%3A`
- **;符号**: `%3B`
- **<符号**: `%3C`
- **=符号**: `%3D`
- **>符号**: `%3E`
- **?符号**: `%3F`
- **@符号**: `%40`
- **[符号**: `%5B`
- **\符号**: `%5C`
- **]符号**: `%5D`
- **`符号**: `%60`
- **{符号**: `%7B`
- **|符号**: `%7C`
- **}符号**: `%7D`

### 转化的目的是什么?

1. **安全传输**:防止在URL中传输数据时,因特殊字符导致数据的误解析或错误解释。
2. **合法性**:保证URL符合标准规范,避免因非法字符导致的解析问题。
3. **一致性**:确保不同系统、浏览器、服务器对URL的处理和理解是一致的。

URL编码是网络通信中不可或缺的一部分,确保了数据在不同环境之间的安全、可靠传输。


问题:UrlEncode主要是放在浏览器的GET参数中传输吧,POST中就不需要进行UrlEncode吧? 为什么经过了urlencode的数据放在curl中的--data-binary还要再进行一次base64转码呢?

答案:
URL编码主要用于确保数据在URL中传输时不被错误解释。对于GET请求,参数通常直接附在URL后面,因此必须进行URL编码以处理特殊字符。但对于POST请求,数据通常在请求体中传输,这种情况下,是否需要URL编码取决于数据格式和传输方式。

### 关于URL编码在POST请求中的使用:

1. **表单提交(`application/x-www-form-urlencoded`)**:
   - 默认情况下,表单数据会自动使用`application/x-www-form-urlencoded`的MIME类型,这意味着表单字段的值将被URL编码。
   - 例如,`name=John Doe&age=25`会变成`name=John%20Doe&age=25`。

2. **JSON或其他数据格式(`application/json`)**:
   - 如果POST请求以JSON或其他格式发送数据(如`application/json`),通常不需要URL编码,因为数据是以原始格式直接放在请求体中。
   - 例如,JSON数据`{"name": "John Doe", "age": 25}`不会被编码,而是直接作为请求体的一部分发送。

### 为什么在`curl`中使用`--data-binary`的同时还要进行Base64编码?

Base64编码是一种将二进制数据转换为ASCII字符的编码方式。以下是一些场景中使用Base64编码的原因:

1. **处理二进制数据**:
   - `--data-binary`在`curl`中用于直接传输原始数据,不进行任何处理。对于某些API或服务器而言,如果数据中包含不可见字符或特殊字符(例如图像、加密数据、二进制文件),可能会导致解析问题。因此,使用Base64编码可以确保这些数据在传输过程中不会被误解或损坏。

2. **兼容性**:
   - 某些服务器或应用可能要求或更容易处理Base64编码的数据。Base64编码将数据转换为只包含字母、数字及少量符号的ASCII字符,从而避免了特殊字符导致的解析问题。

3. **安全性**:
   - 在某些情况下,数据经过URL编码后仍然可能包含对服务器或API具有特殊意义的字符。这些字符可能会触发某些意外行为或安全风险。通过额外的Base64编码,可以增加数据的可靠性和安全性,防止这些问题的发生。

### 综合考虑:
- 在GET请求中,URL编码是必须的。
- 在POST请求中,URL编码取决于内容类型和数据格式。
- Base64编码是为了解决特殊字符、二进制数据传输问题,以及提高数据的安全性和兼容性。

因此,数据即使经过URL编码,在传输中可能仍然需要Base64编码以确保数据的完整性和安全性。

除开strace外还有一款性能分析工具:
sudo yum install perf
perf record -F max -a -g -- screen -ls

perf record -F max -a -g -- screen -ls
info: Using a maximum frequency rate of 11,000 Hz
There is a screen on:
        16882.abc       (Detached)
1 Socket in /var/run/screen/S-root.

[ perf record: Woken up 14 times to write data ]
[ perf record: Captured and wrote 4.143 MB perf.data (34888 samples) ]
可在不同设备上读取的perf.data 文件. 您可以使用 perf 工具将性能数据记录到 perf.data 文件中,以便在不同的设备上分析。


echo Soft: $(ulimit -Sn)
echo Hard: $(ulimit -Hn)
Soft: 1024000
Hard: 1024000

立即生效的解决办法(重启配置失效):
ulimit -Sn 10000
ulimit -Hn 50000

重启后永久生效实操:
要在 CentOS 7 上永久设置 `ulimit`,您需要修改 `/etc/security/limits.conf` 文件。这个文件允许您设置系统级别的资源限制。您可以按照以下步骤进行修改:

1. 打开终端并以 root 用户身份登录。
2. 使用文本编辑器(如 `vi` 或 `nano`)打开 `/etc/security/limits.conf` 文件:

```bash
sudo vi /etc/security/limits.conf
```

3. 在文件末尾添加以下行:

```
*       soft    nofile  10000
*       hard    nofile  50000
```

这里,`soft` 代表软限制,`hard` 代表硬限制。软限制是系统允许的最大值,超过此限制时会发出警告。硬限制是系统允许的绝对最大值,超过此限制时会导致操作失败。通常情况下,软限制和硬限制是相同的。

4. 保存并关闭文件。在 vi 中,您可以按 `Esc` 键输入 `:wq` 然后按 `Enter` 保存并退出。

5. 重新启动系统或重新登录以使更改生效。

现在 `ulimit` 的设置应该在系统重新启动后生效,并且将永久保持。

fix: Normalize RLIMIT_NOFILE (LimitNOFILE) to sensible defaults:
https://github.com/moby/moby/pull/45534

gnu screen run extremely slow when using 'root' user in container since docker 23.0.1 #45380:
https://github.com/moby/moby/issues/45380


=============================================================

火焰图
on-cpu火焰图可以用于分析cpu是被哪些线程、哪些函数占用的,可以方便的找到热点代码便于后续分析优化。下面我们介绍下火焰图的生成和使用方法。

使用方法
准备FlameGraph工具。
git clone https://github.com/brendangregg/FlameGraph.git
用perf record采集CPU信息。
perf record -e cpu-clock -g  ./perf_test
Ctrl+c结束执行后,在当前目录下会生成采样数据perf.data。

用perf script工具对perf.data进行解析。
perf script -i perf.data &> perf.unfold
将perf.unfold中的符号进行折叠。
./stackcollapse-perf.pl perf.unfold &> perf.folded
最后生成svg图。
./flamegraph.pl perf.folded > perf.svg
perf.svg 用浏览器就可以打开

来自:https://github.com/moby/moby/pull/45534
Mac下面压缩是zip的,放FreeBSD下面怎么解压呢?
FreeBSD下面安装unzip的方法是:
pkg install  -y unzip #注意:-y是安装在unzip的前面才行

二是:Port方式安装:
-->whereis unzip  查找port源
一般是/usr/ports/archivers/unzip
cd /usr/ports/archivers/unzip
make install clean
rehash    ---在不重启服务器的条件使安装了的命令生效
就可以用unzip命令了 。。
然后通过ftp上传PHPWind_GBK_5[1].3.zip
用unzip PHPWind_GBK_5[1].3.zip
在服务器上解压。。

===> Options unchanged
/!\ WARNING /!\

You have security/openssl installed but do not have
DEFAULT_VERSIONS+=ssl=openssl set in your make.conf

===>  License Info-ZIP accepted by the user
===>   unzip-6.0_8 depends on file: /usr/local/sbin/pkg - found
=> unzip60.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch https://downloads.sourceforge.net/project/infozip/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz
===>   Generating temporary packing list
install  -s -m 555 /usr/ports/archivers/unzip/work/unzip60/unzip  /usr/ports/archivers/unzip/work/stage/usr/local/bin
cd /usr/ports/archivers/unzip/work/unzip60 &&  install  -s -m 555 funzip unzipsfx /usr/ports/archivers/unzip/work/stage/usr/local/bin
/bin/ln -sf unzip /usr/ports/archivers/unzip/work/stage/usr/local/bin/zipinfo
install  -m 555 /usr/ports/archivers/unzip/work/unzip60/unix/zipgrep /usr/ports/archivers/unzip/work/stage/usr/local/bin
install  -m 444 /usr/ports/archivers/unzip/work/unzip60/man/unzip.1  /usr/ports/archivers/unzip/work/stage/usr/local/share/man/man1
cd /usr/ports/archivers/unzip/work/unzip60/man && install  -m 444 funzip.1 unzipsfx.1 zipgrep.1 zipinfo.1  /usr/ports/archivers/unzip/work/stage/usr/local/share/man/man1
cd /usr/ports/archivers/unzip/work/unzip60 && install  -m 0644 README WHERE /usr/ports/archivers/unzip/work/stage/usr/local/share/doc/unzip
====> Compressing man pages (compress-man)
===>  Installing for unzip-6.0_8
===>  Checking if unzip is already installed
===>   Registering installation for unzip-6.0_8
Installing unzip-6.0_8...
===>  Cleaning for unzip-6.0_8

来自:https://dude6.com/article/182115.html
1、命令行直接打开「控制台」应用程序:/System/Applications/Utilities/Console.app
2、手工打开「控制台」应用程序步骤:使用 Spotlight 搜索:点击屏幕右上角的放大镜图标或按下 Command + 空格键,然后在弹出的搜索栏中输入 "控制台"(Console)。

在搜索结果中,你应该会看到 "控制台" 应用程序的图标。点击它以打开应用程序。

一旦打开 "控制台" 应用程序,你将看到左侧的导航栏,其中包含不同类型的日志。你可以选择 "日志报告" 以查看系统日志文件。
==============================================================================================
崩溃报告(Crash Reports):这些报告通常包含有关应用程序或进程崩溃的信息。如果 WindowServer 或其他进程崩溃,相关信息可能会出现在这些报告中。

Spin报告(Spin Reports):Spin 报告包含关于进程的信息,可能会显示进程卡住的情况。这些报告可能提供一些线索,说明哪个进程可能导致了问题。

日志报告(Log Reports):日志报告通常包含系统和应用程序的日志信息。虽然它们不是系统日志,但可能包含有关 WindowServer 或其他进程活动的记录。

诊断报告(Diagnostics Reports):诊断报告通常是系统生成的详细报告,用于识别和解决问题。你可以查看这些报告以获取更多信息。

请打开这些报告,查看是否有与 WindowServer 或其他进程相关的信息,以便更好地了解问题的根本原因。如果你不确定如何解释报告中的信息或需要进一步的帮助,建议联系 Apple 支持或专业人员进行更详细的故障排除。感谢你的耐心和理解。
在Mac上,软链接(symbolic link)是一种特殊类型的文件,它指向另一个文件或目录的路径。默认情况下,当你使用打包工具(例如tar命令)打包软链接时,会将软链接本身打包进去,而不是它所指向的实际文件。

如果你想要在打包时将软链接解析成实际文件路径并打包实际文件,可以使用-L选项来强制解析软链接。这样,打包工具会将软链接解析成实际文件,并将实际文件打包进去。

下面是使用tar命令打包时解析软链接的示例命令:


这个命令会将/path/to/symlink软链接解析成实际文件,并将实际文件打包到archive.tar.gz中。

另外,如果你想要直接拷贝软链接所指向的原始文件,而不是拷贝软链接本身,可以使用cp命令的-L选项。这样,cp命令会拷贝软链接所指向的实际文件而不是软链接本身。

下面是使用cp命令拷贝软链接指向的原始文件的示例命令:

这个命令会拷贝/path/to/symlink软链接所指向的实际文件到/path/to/destination目录中。

请注意,tar命令和cp命令中的-L选项可能在不同的操作系统和版本中略有不同,请根据你的系统和命令版本来查阅相关文档以确保正确使用。


=========
在 CentOS 7 中,systemctl 会根据服务的名称在 /var/run 目录下的 systemd 子目录创建对应的 PID 文件。具体来说,对于服务名称为 pdfwatcher 的服务,systemctl 会在 /var/run/systemd/ 目录下创建一个名为 pdfwatcher.service 的 PID 文件。

你可以通过以下命令查看该 PID 文件的内容:

bash
Copy code
cat /var/run/systemd/pdfwatcher.service
该文件中只包含一个数字,即 pdfwatcher 服务的进程号。这样,systemctl 就可以根据 PID 文件来跟踪服务的进程,并执行相应的管理和控制操作。

请注意,/var/run 目录通常在系统启动时自动挂载,并用于存储运行时的变量数据和进程相关信息。因此,当服务启动时,systemd 会自动在这个目录下创建 PID 文件。




User
我没有找到对应的pid文件,我的systemctl的service文件是写成这样的,为何没有生成呢?
cat /usr/lib/systemd/system/pdfwatcher.service
# It's not recommended to modify this file in-place, because it
# will be overwritten during upgrades.  If you want to customize,
# the best way is to use the "systemctl edit" command.

[Unit]
Description=pdfwatcher is a real-time monitoring pdf file chmod value is no longer 400 and alarm daemon
After=network.target

[Service]

Type=forking

ExecStart=/usr/local/pdfwatcher/bin/pdfwatcherd -d

ExecStop=/usr/local/pdfwatcher/bin/pdfwatcherd stop

PrivateTmp=true

[Install]
WantedBy=multi-user.target
背景:容器中用docker stop  4d393592c6ec ,sameersbn/redmine:5.0.5 的容器会产生如下日志,docker logs 4d393592c6e  #docker stop 4d393592c6ec  会触发下面的退出,而不是臆想的主动退出了,是手工执行出现docker 退出。

2023-05-18 07:52:16,943 WARN received SIGTERM indicating exit request
2023-05-18 07:52:16,943 INFO waiting for unicorn, cron, nginx to die
2023-05-18 07:52:16,945 INFO stopped: nginx (exit status 0)
2023-05-18 07:52:16,946 INFO stopped: cron (terminated by SIGTERM)
2023-05-18 07:52:17,947 INFO stopped: unicorn (exit status 0)

是一个SIGTERM信号,kill -l 发现15) SIGTERM,编号15,才知道是我自己停止的,而不是长时间运行出现自动退出。这个很重要,因为容器的稳定性相当重要。
下面就以这段C代码进行模拟容器的退出并发SIGTERM信号,如下:
test.c


send.c 用于发送SIGTERM 信号给test


SIGTERM : 程序结束信号,与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出。Shell命令kill 默认产生这个信号。
gcc  test.c -o test
gcc  send.c -o send
运行程序:
./test

./send 12345  //12345是test的pid



终端下输入:
kill 12345
也会给test发送SIGTERM 信号。
or kill -15 12345
kill -SIGTERM 12345



来自:https://blog.csdn.net/a379039233/article/details/80715461
More signal:
#kill -l
1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX
在Windows上,虽然它不是通用的,但许多应用程序都支持快捷键Ctrl + Shift + V来粘贴而不格式化。其中包括Chrome,Firefox和Evernote。

要在Mac上以纯文本格式粘贴,您可以使用笨拙的快捷键Option + Cmd + Shift + V粘贴而无需格式化。这是系统范围的快捷方式,因此与Windows不同,它应可在任何地方使用。


在 Mac 系统中,使用以下快捷键可以复制 Word 中的纯文本内容而不带样式:
Command + Shift + V
在 Word 中,将文本从一个位置复制到另一个位置时,默认情况下会保留原始文本的格式和样式。如果您只想复制纯文本,可以使用这个快捷键,它可以在将文本粘贴到目标位置时自动去除原有格式和样式。


word如何在表格和标题之间插入空白行?
https://www.zhihu.com/question/569150619
在Mac上关闭/打开聚焦索引:
背景:Mac上的 Spotlight 会调用mds、mdworker等进程,占用cpu使用率,造成系统卡顿。如果电脑配置比较低的话可以将Spotlight关闭,如果需要使用Spotlight 或者 Alfred等功能时,就需要将Spotlight 开启。
关闭Spotlight:
方法1: 使用 launchctl 管理 MacOS 服务。这里卸载Spotlight的配置. 卸载配置之后,就不会再启动mds等进程来扫描文件,这样后续新增App或者文件,在Spotlight和Alfred中也就搜索不到了。
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
复制代码
方法2:
sudo mdutil -a -i off
复制代码
重启Spotlight:
方法1:使用 launchctl 管理 MacOS 服务。这里加载Spotlight的配置,重启mds等进程扫描文件。
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
复制代码
方法2:
sudo mdutil -a -i on
复制代码
如果方法2中的命令后抛出 Spotlight server is disabled 这样的错误,那么就要用方法1中的操作了。


链接:https://juejin.cn/post/7024398552939888653

选取苹果菜单  >“系统设置”。
点按边栏中的“Siri 与聚焦”,然后在右侧向下滚动并点按“聚焦隐私”。
将你想要重新创建索引的磁盘或文件夹拖移到“聚焦”无法搜索的位置列表中。或者点按添加按钮 (+),然后选择要添加的磁盘或文件夹*。

从同一位置列表中,选择你刚添加的磁盘或文件夹。然后点按移除按钮 (–),将它从列表中移除。
点按“完成”,然后退出“系统设置”。“聚焦”将为这个磁盘或文件夹中的内容重新创建索引。这可能需要一些时间,具体取决于要创建索引的信息量。


来自:https://www.cnblogs.com/Flat-White/p/17019942.html
修改源:
sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
apk update

解决找不到iprout2的步骤:
apk add iprout2
ERROR: unable to select packages:
  iprout2 (no such package):
    required by: world[iprout2]

分两部分了,和之前链接说明的不一样,成功实践成功如下:
apk add iproute2-ss
(1/1) Installing iproute2-ss (5.12.0-r0)
Executing busybox-1.33.1-r3.trigger
OK: 60 MiB in 102 packages
/data/www # ss -s
Total: 527
TCP:   199 (estab 140, closed 42, orphaned 0, timewait 28)

Transport Total     IP        IPv6
RAW       0         0         0        
UDP       6         4         2        
TCP       157       139       18      
INET      163       143       20      
FRAG      0         0         0




apk list|less
iproute2-minimal-5.12.0-r0
于是得运行:


ip link list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 02:50:00:00:00:01 brd ff:ff:ff:ff:ff:ff
3: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
4: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/tunnel6 :: brd :: permaddr 76d0:a339:d4d8::
5: services1@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
    link/ether 4e:cc:8c:b9:b1:3d brd ff:ff:ff:ff:ff:ff link-netnsid 0
7: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
    link/ether 02:42:78:54:32:ae brd ff:ff:ff:ff:ff:ff


ip route show
default via 192.168.65.1 dev eth0 proto dhcp src 192.168.65.3 metric 202
10.1.0.0/16 dev cni0 proto kernel scope link src 10.1.0.1
127.0.0.0/8 dev lo scope host
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.65.0/24 dev eth0 proto dhcp scope link src 192.168.65.3 metric 202
192.168.65.5 dev services1 proto kernel scope link src 192.168.65.4
阅读全文
[root@localhost ~]# mkdir -p /tmp/test
[root@localhost ~]# [ $[$RANDOM % 6] == 0 ] && sudo rm -rf /tmp/test || echo "Lucky Boy"
Lucky Boy
[root@localhost ~]# [ $[$RANDOM % 6] == 0 ] && sudo rm -rf /tmp/test || echo "Lucky Boy"
Lucky Boy
[root@localhost ~]# [ $[$RANDOM % 6] == 0 ] && sudo rm -rf /tmp/test || echo "Lucky Boy"
[root@localhost ~]# ls /tmp/test
ls: cannot access '/tmp/test': No such file or directory
现象:zsh: killed     env ZSH=$ZSH ZSH_CACHE_DIR=$ZSH_CACHE_DIR  zsh -f
解决:更改.zshrc,把DISABLE_AUTO_UPDATE = false这句话取消注释便可。
实践:cat ~/.zshrc|grep DISABLE_AUTO_UPDATE           #zsh禁用自动更新
DISABLE_AUTO_UPDATE="true"
再打开正常了,不再显示:zsh: killed     env ZSH=$ZSH ZSH_CACHE_DIR=$ZSH_CACHE_DIR  zsh -f

来自:http://www.noobyard.com/article/p-cpnkkkkg-eo.html
问题描述
PackageKit,包管理服务,通过 DBus 接口,执行某些简单的包管理任务,比如刷新缓存,安装、更新、移除软件等等。
但是该服务经常占用大量 CPU 资源,非常多

操作系统:CentOS8
软件版本:cockpit-packagekit-276-1.el8.noarch


解决办法
目前(09/02/2019),并没有人找到 CPU 占用高的原因。所以,对于这个问题也没有什么解决方案。卸载的有,禁用的有,这那的都有,都是些 workaround 办法。

第一步、禁用服务
由于依赖的原因,还不能直接删除掉。因此只能禁用服务:

systemctl stop packagekit.service
systemctl disable packagekit.service
systemctl mask packagekit.service # 如果不mask的话,它还会启动。


实践操作如下:
systemctl stop packagekit.service
systemctl disable packagekit.service
systemctl mask packagekit.service
Created symlink /etc/systemd/system/packagekit.service → /dev/null.


来自:https://www.cnblogs.com/k4nz/p/14266675.html
分页: 1/40 第一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 下页 最后页 [ 显示模式: 摘要 | 列表 ]