前言

介绍一些 Linux 杂项,包括:Linux 命令、Linux 系统问题。

操作系统:Ubuntu 20.04.4 LTS

参考文档

  1. Linux wget 命令详解

  2. pip3安装pillow失败

  3. GET STARTED

  4. 普通用户添加 sudo 权限

  5. ubuntu 修改用户权限,不小心修改了sudoers文件

  6. ubuntu 16.04 忘记root密码的处理方法

  7. Ubuntu 重置密码

  8. Ubuntu卸载Pyhon3无法进入图形界面

  9. ubuntu下获取apt-get离线安装包的通用方法

  10. Linux之ubuntu离线安装软件包

  11. Ubuntu Packages Search

  12. Ubuntu 如何离线安装软件包

  13. dpkg -i 安装软件出现各种依赖等问题解决办法

  14. Index of /ubuntu/pool/main

  15. 当你的Ubuntu UI界面消失时该怎么做

  16. Linux 或 Mac OS 系统通过 SCP 上传文件到 Linux 轻量应用服务器

  17. Ubuntu22 超nice的QQ(Icalingua++)安装步骤,拒绝走弯路!!

  18. 详解Github的.gitignore忽略文件

  19. 重定向符号> >>

  20. ubuntu下常用apt命令介绍

  21. ssh免密登录服务器

  22. Ubuntu改host提速Github

  23. ubuntu 系统解决GitHub无法访问问题

  24. Error while loading shared libraries: xxx — 解决方案

  25. ubuntu如何查看磁盘空间

  26. linux 清空文件内容的方式

  27. linux系统设置root初始化密码

wget 命令

wget 命令是 Linux 系统用于从 Web 上下载文件的命令行工具,支持 HTTPHTTPSFTP 协议。

安装

1
$ sudo apt install wget

wget --help

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
$ wget --help
GNU Wget 1.20.3,非交互式的网络文件下载工具。
用法: wget [选项]... [URL]...

长选项所必须的参数在使用短选项时也是必须的。

启动:
-V, --version 显示 Wget 的版本信息并退出
-h, --help 打印此帮助
-b, --background 启动后转入后台
-e, --execute=命令 运行一个“.wgetrc”风格的命令

日志和输入文件:
-o, --output-file=文件 将日志信息写入 FILE
-a, --append-output=文件 将信息添加至 FILE
-d, --debug 打印大量调试信息
-q, --quiet 安静模式 (无信息输出)
-v, --verbose 详尽的输出 (此为默认值)
-nv, --no-verbose 关闭详尽输出,但不进入安静模式
--report-speed=类型 以 <类型> 报告带宽。类型可以是 bits
-i, --input-file=文件 下载本地或外部 <文件> 中的 URL
-F, --force-html 把输入文件当成 HTML 文件
-B, --base=URL 解析相对于 URL 的 HTML 输入文件链接 (-i -F)
--config=文件 指定要使用的配置文件
--no-cookies 不读取任何配置文件
--rejected-log=文件 将拒绝 URL 的原因写入 <文件>。

下载:
-t, --tries=数字 设置重试次数为 <数字> (0 代表无限制)
--retry-connrefused 即使拒绝连接也是重试
--retry-on-http-error=ERRORS 提供以逗号分隔的列表,列出遇到时进行重试的 HTTP 错误
-O, --output-document=文件 将文档写入 FILE
-nc, --no-clobber 不要下载已存在将被覆盖的文件
--no-netrc 不要尝试从 .netrc 获取凭据
-c, --continue 断点续传下载文件
--start-pos=偏移量 从由零计数的 <偏移量> 开始下载
--progress=类型 选择进度条类型
--show-progress 在任意啰嗦状态下都显示进度条
-N, --timestamping 只获取比本地文件新的文件
--no-if-modified-since 不要在时间戳 (timestamping) 模式下使用
if-modified-since get 条件请求
--no-use-server-timestamps 不用服务器上的时间戳来设置本地文件
-S, --server-response 打印服务器响应
--spider 不下载任何文件
-T, --timeout=SECONDS 将所有超时设为 SECONDS 秒
--dns-timeout=SECS 设置 DNS 查寻超时为 SECS 秒
--connect-timeout=SECS 设置连接超时为 SECS 秒
--read-timeout=SECS 设置读取超时为 SECS 秒
-w, --wait=SECONDS 等待间隔为 SECONDS 秒
--waitretry=SECONDS 在获取文件的重试期间等待 1..SECONDS 秒
--random-wait 获取多个文件时,每次随机等待间隔 (0.5~1.5)*WAIT 秒
--no-proxy 禁止使用代理
-Q, --quota=数字 设置获取配额为 <数字> 字节
--bind-address=ADDRESS 绑定至本地主机上的 ADDRESS (主机名或是 IP)
--limit-rate=RATE 限制下载速率为 RATE
--no-dns-cache 关闭 DNS 查询缓存
--restrict-file-names=系统 限定文件名中的字符为 <系统> 允许的字符
--ignore-case 匹配文件/目录时忽略大小写
-4, --inet4-only 仅连接至 IPv4 地址
-6, --inet6-only 仅连接至 IPv6 地址
--prefer-family=地址族 首先连接至指定家族(IPv6,IPv4 或 none)的地址
--user=用户 将 ftp 和 http 的用户名均设置为 <用户>
--password=密码 将 ftp 和 http 的密码均设置为 <密码>
--ask-password 提示输入密码
--use-askpass=命令 指定用于请求用户名和密码的凭据管理器。
如果没有提供指定命令,程序将使用 WGET_ASKPASS 或
SSH_ASKPASS 环境变量。
--no-iri 关闭 IRI 支持
--local-encoding=ENC 使用 ENC 作为 IRI (国际化资源标识符) 的本地编码
--remote-encoding=ENC 使用 ENC 作为默认远程编码
--unlink 覆盖前移除文件
--xattr 在文件的拓展属性中储存元数据

目录:
-nd, --no-directories 不创建目录
-x, --force-directories 强制创建目录
-nH, --no-host-directories 不要创建主 (host) 目录
--protocol-directories 在目录中使用协议名称
-P, --directory-prefix=前缀 保存文件到 <前缀>/..
--cut-dirs=数字 忽略远程目录中 <数字> 个目录层。

HTTP 选项:
--http-user=用户 设置 http 用户名为 <用户>
--http-password=密码 设置 http 密码为 <密码>
--no-cache 不使用服务器缓存的数据。
--default-page=NAME 改变默认页 (通常是“index.html”)。
-E, --adjust-extension 以合适的扩展名保存 HTML/CSS 文档
--ignore-length 忽略头部的‘Content-Length’区域
--header=字符串 在头部插入 <字符串>
--compression=类型 选择压缩类型,值可以为 auto、gzip 和 none。(默认:none)
--max-redirect 每页所允许的最大重定向
--proxy-user=用户 使用 <用户> 作为代理用户名
--proxy-password=密码 使用 <密码> 作为代理密码
--referer=URL 在 HTTP 请求头包含‘Referer: URL’
--save-headers 将 HTTP 头保存至文件。
-U, --user-agent=代理 标识自己为 <代理> 而不是 Wget/VERSION。
--no-http-keep-alive 禁用 HTTP keep-alive (持久连接)。
--no-cookies 不使用 cookies。
--load-cookies=文件 会话开始前从 <文件> 中载入 cookies。
--save-cookies=文件 会话结束后保存 cookies 至 FILE。
--keep-session-cookies 载入并保存会话 (非永久) cookies。
--post-data=字符串 使用 POST 方式;把 <字串>作为数据发送。
--post-file=文件 使用 POST 方式;发送 <文件> 内容。
--method=HTTP方法 在请求中使用指定的 <HTTP 方法>。
--post-data=字符串 把 <字串> 作为数据发送,必须设置 --method
--post-file=文件 发送 <文件> 内容,必须设置 --method
--content-disposition 当选择本地文件名时允许 Content-Disposition
头部 (实验中)。
--content-on-error 在服务器错误时输出接收到的内容
--auth-no-challenge 不先等待服务器询问就发送基本 HTTP 验证信息。

HTTPS (SSL/TLS) 选项:
--secure-protocol=PR 选择安全协议,值可以是 auto、SSLv2、
SSLv3、TLSv1、TLSv1_1、TLSv1_2 或 PFS
--https-only 只跟随安全的 HTTPS 链接
--no-check-certificate 不要验证服务器的证书。
--certificate=文件 客户端证书文件。
--certificate-type=类型 客户端证书类型,PEM 或 DER。
--private-key=文件 私钥文件。
--private-key-type=类型 私钥文件类型,PEM 或 DER。
--ca-certificate=文件 带有一组 CA 证书的文件。
--ca-directory=DIR 保存 CA 证书的哈希列表的目录。
--ca-certificate=文件 带有一组 CA 证书的文件。
--pinnedpubkey=文件/散列值 用于验证节点的公钥(PEM/DER)文件或
任何数量的 sha256 散列值,以 base64 编码、
“sha256//” 开头、用“;”间隔
--random-file=文件 用于初始化 SSL 伪随机数生成器(PRNG)的文件,
应含有随机数据

--ciphers=STR 直接设置 priority string (GnuTLS) 或 cipher list string (OpenSSL)。
请小心使用。该选项会覆盖 --secure-protocol。
其具体格式和字符串语法取决于对应的 SSL/TLS 引擎。
HSTS 选项:
--no-hsts 禁用 HSTS
--hsts-file HSTS 数据库路径(将覆盖默认值)

FTP 选项:
--ftp-user=用户 设置 ftp 用户名为 <用户>。
--ftp-password=密码 设置 ftp 密码为 <密码>
--no-remove-listing 不要删除‘.listing’文件
--no-glob 不在 FTP 文件名中使用通配符展开
--no-passive-ftp 禁用“passive”传输模式
--preserve-permissions 保留远程文件的权限
--retr-symlinks 递归目录时,获取链接的文件 (而非目录)

FTPS 选项:
--ftps-implicit 使用隐式 FTPS(默认端口 990)
--ftps-resume-ssl 打开数据连接时继续控制连接中的 SSL/TLS 会话
--ftps-clear-data-connection 只加密控制信道;数据传输使用明文
--ftps-fallback-to-ftp 回落到 FTP,如果目标服务器不支持 FTPS
WARC 选项:
--warc-file=文件名 在一个 .warc.gz 文件里保持请求/响应数据
--warc-header=字符串 在头部插入 <字符串>
--warc-max-size=数字 将 WARC 的最大尺寸设置为 <数字>
--warc-cdx 写入 CDX 索引文件
--warc-dedup=文件名 不要记录列在此 CDX 文件内的记录
--no-warc-compression 不要 GZIP 压缩 WARC 文件
--no-warc-digests 不要计算 SHA1 摘要
--no-warc-keep-log 不要在 WARC 记录中存储日志文件
--warc-tempdir=目录 WARC 写入器的临时文件目录

递归下载:
-r, --recursive 指定递归下载
-l, --level=数字 最大递归深度 (inf 或 0 代表无限制,即全部下载)。
--delete-after 下载完成后删除本地文件
-k, --convert-links 让下载得到的 HTML 或 CSS 中的链接指向本地文件
--convert-file-only 只转换 URL 的文件部分(一般叫做“基础名”/basename)
--backups=N 写入文件 X 前,轮换移动最多 N 个备份文件
-K, --backup-converted 在转换文件 X 前先将它备份为 X.orig。
-m, --mirror -N -r -l inf --no-remove-listing 的缩写形式。
-p, --page-requisites 下载所有用于显示 HTML 页面的图片之类的元素。
--strict-comments 用严格方式 (SGML) 处理 HTML 注释。

递归接受/拒绝:
-A, --accept=列表 逗号分隔的可接受的扩展名列表
-R, --reject=列表 逗号分隔的要拒绝的扩展名列表
--accept-regex=REGEX 匹配接受的 URL 的正则表达式
--reject-regex=REGEX 匹配拒绝的 URL 的正则表达式
--regex-type=类型 正则类型 (posix|pcre)
-D, --domains=列表 逗号分隔的可接受的域名列表
--exclude-domains=列表 逗号分隔的要拒绝的域名列表
--follow-ftp 跟踪 HTML 文档中的 FTP 链接
--follow-tags=列表 逗号分隔的跟踪的 HTML 标识列表
--ignore-tags=列表 逗号分隔的忽略的 HTML 标识列表
-H, --span-hosts 递归时转向外部主机
-L, --relative 仅跟踪相对链接
-I, --include-directories=列表 允许目录的列表
--trust-server-names 使用重定向 URL 的最后一段作为本地文件名
-X, --exclude-directories=列表 排除目录的列表
-np, --no-parent 不追溯至父目录

请将错误报告、问题和讨论寄信至 <bug-wget@gnu.org>
和/或在 https://savannah.gnu.org/bugs/?func=additem&group=wget 开 issue 进行讨论。

默认用法

1
$ wget [选项]... [URL]...

使用 wget 下载 redistar.gz 文件 (https://download.redis.io/releases/):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ wget https://download.redis.io/releases/redis-6.0.8.tar.gz
--2022-09-28 12:59:32-- https://download.redis.io/releases/redis-6.0.8.tar.gz
正在解析主机 download.redis.io (download.redis.io)... 45.60.125.1
正在连接 download.redis.io (download.redis.io)|45.60.125.1|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 2247528 (2.1M) [application/octet-stream]
正在保存至: “redis-6.0.8.tar.gz”

redis-6.0.8.tar.gz 100%[===================================================================================>] 2.14M 5.61MB/s 用时 0.4s

2022-09-28 12:59:33 (5.61 MB/s) - 已保存 “redis-6.0.8.tar.gz” [2247528/2247528])

$ ls
redis-6.0.8.tar.gz

注: 默认情况下会将文件下载到当前工作目录中。

-O 更改下载文件的名字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ wget -O redis.tar.gz https://download.redis.io/releases/redis-6.0.8.tar.gz
--2022-09-28 13:05:13-- https://download.redis.io/releases/redis-6.0.8.tar.gz
正在解析主机 download.redis.io (download.redis.io)... 45.60.125.1
正在连接 download.redis.io (download.redis.io)|45.60.125.1|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 2247528 (2.1M) [application/octet-stream]
正在保存至: “redis.tar.gz”

redis.tar.gz 100%[===================================================================================>] 2.14M 7.12MB/s 用时 0.3s

2022-09-28 13:05:13 (7.12 MB/s) - 已保存 “redis.tar.gz” [2247528/2247528])

$ ls
redis-6.0.8.tar.gz redis.tar.gz

-P 将文件下载到指定目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ ls
redis-6.0.8.tar.gz redis.tar.gz
$ mkdir tmp
$ ls
redis-6.0.8.tar.gz redis.tar.gz tmp
$ wget -P ./tmp/ https://download.redis.io/releases/redis-6.0.8.tar.gz
--2022-09-28 13:16:50-- https://download.redis.io/releases/redis-6.0.8.tar.gz
正在解析主机 download.redis.io (download.redis.io)... 45.60.125.1
正在连接 download.redis.io (download.redis.io)|45.60.125.1|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 2247528 (2.1M) [application/octet-stream]
正在保存至: “./tmp/redis-6.0.8.tar.gz”

redis-6.0.8.tar.gz 100%[===================================================================================>] 2.14M 7.05MB/s 用时 0.3s

2022-09-28 13:16:51 (7.05 MB/s) - 已保存 “./tmp/redis-6.0.8.tar.gz” [2247528/2247528])

$ tree
.
├── redis-6.0.8.tar.gz
├── redis.tar.gz
└── tmp
└── redis-6.0.8.tar.gz

1 directory, 3 files

-c 断点续传下载文件

注:中途断网导致文件下载未完成,-c 能够恢复下载,无需从头下载。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ tree
.

0 directories, 0 files
$ wget -c https://download.redis.io/releases/redis-6.0.8.tar.gz
--2022-09-28 13:24:44-- https://download.redis.io/releases/redis-6.0.8.tar.gz
正在解析主机 download.redis.io (download.redis.io)... 45.60.125.1
正在连接 download.redis.io (download.redis.io)|45.60.125.1|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 2247528 (2.1M) [application/octet-stream]
正在保存至: “redis-6.0.8.tar.gz”

redis-6.0.8.tar.gz 100%[==================>] 2.14M 7.28MB/s 用时 0.3s

2022-09-28 13:24:45 (7.28 MB/s) - 已保存 “redis-6.0.8.tar.gz” [2247528/2247528])

$ tree
.
└── redis-6.0.8.tar.gz

0 directories, 1 file

-b 后台下载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
$ tree
.

0 directories, 0 files
$ wget -b https://download.redis.io/releases/redis-6.0.8.tar.gz
继续在后台运行,pid 为 11224。
将把输出写入至 “wget-log”。
$ ls
redis-6.0.8.tar.gz wget-log
$ cat wget-log
--2022-09-28 13:27:37-- https://download.redis.io/releases/redis-6.0.8.tar.gz
正在解析主机 download.redis.io (download.redis.io)... 45.60.125.1
正在连接 download.redis.io (download.redis.io)|45.60.125.1|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 2247528 (2.1M) [application/octet-stream]
正在保存至: “redis-6.0.8.tar.gz”

0K .......... .......... .......... .......... .......... 2% 324K 7s
50K .......... .......... .......... .......... .......... 4% 647K 5s
100K .......... .......... .......... .......... .......... 6% 52.9M 3s
150K .......... .......... .......... .......... .......... 9% 649K 3s
200K .......... .......... .......... .......... .......... 11% 54.4M 2s
250K .......... .......... .......... .......... .......... 13% 49.8M 2s
300K .......... .......... .......... .......... .......... 15% 655K 2s
350K .......... .......... .......... .......... .......... 18% 49.9M 2s
400K .......... .......... .......... .......... .......... 20% 50.7M 2s
450K .......... .......... .......... .......... .......... 22% 114M 1s
500K .......... .......... .......... .......... .......... 25% 156M 1s
550K .......... .......... .......... .......... .......... 27% 411M 1s
600K .......... .......... .......... .......... .......... 29% 415M 1s
650K .......... .......... .......... .......... .......... 31% 691K 1s
700K .......... .......... .......... .......... .......... 34% 16.1M 1s
750K .......... .......... .......... .......... .......... 36% 51.9M 1s
800K .......... .......... .......... .......... .......... 38% 71.6M 1s
850K .......... .......... .......... .......... .......... 41% 180M 1s
900K .......... .......... .......... .......... .......... 43% 185M 1s
950K .......... .......... .......... .......... .......... 45% 152M 1s
1000K .......... .......... .......... .......... .......... 47% 180M 1s
1050K .......... .......... .......... .......... .......... 50% 206M 0s
1100K .......... .......... .......... .......... .......... 52% 181M 0s
1150K .......... .......... .......... .......... .......... 54% 165M 0s
1200K .......... .......... .......... .......... .......... 56% 185M 0s
1250K .......... .......... .......... .......... .......... 59% 200M 0s
1300K .......... .......... .......... .......... .......... 61% 186M 0s
1350K .......... .......... .......... .......... .......... 63% 730K 0s
1400K .......... .......... .......... .......... .......... 66% 28.6M 0s
1450K .......... .......... .......... .......... .......... 68% 36.7M 0s
1500K .......... .......... .......... .......... .......... 70% 139M 0s
1550K .......... .......... .......... .......... .......... 72% 146M 0s
1600K .......... .......... .......... .......... .......... 75% 203M 0s
1650K .......... .......... .......... .......... .......... 77% 202M 0s
1700K .......... .......... .......... .......... .......... 79% 199M 0s
1750K .......... .......... .......... .......... .......... 82% 153M 0s
1800K .......... .......... .......... .......... .......... 84% 208M 0s
1850K .......... .......... .......... .......... .......... 86% 206M 0s
1900K .......... .......... .......... .......... .......... 88% 192M 0s
1950K .......... .......... .......... .......... .......... 91% 197M 0s
2000K .......... .......... .......... .......... .......... 93% 205M 0s
2050K .......... .......... .......... .......... .......... 95% 210M 0s
2100K .......... .......... .......... .......... .......... 97% 204M 0s
2150K .......... .......... .......... .......... .... 100% 220M=0.5s

2022-09-28 13:27:38 (3.93 MB/s) - 已保存 “redis-6.0.8.tar.gz” [2247528/2247528])

$ tail -f wget-log
1850K .......... .......... .......... .......... .......... 86% 206M 0s
1900K .......... .......... .......... .......... .......... 88% 192M 0s
1950K .......... .......... .......... .......... .......... 91% 197M 0s
2000K .......... .......... .......... .......... .......... 93% 205M 0s
2050K .......... .......... .......... .......... .......... 95% 210M 0s
2100K .......... .......... .......... .......... .......... 97% 204M 0s
2150K .......... .......... .......... .......... .... 100% 220M=0.5s

2022-09-28 13:27:38 (3.93 MB/s) - 已保存 “redis-6.0.8.tar.gz” [2247528/2247528])


^C
$

注:下载日志会写入到 wget-log 文件中,可以使用 tail -f wget-log 查看。

-i 下载多个文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
$ ls
download_list.txt
$ cat download_list.txt
https://download.redis.io/releases/redis-6.0.8.tar.gz
https://download.redis.io/releases/redis-6.2.1.tar.gz
https://download.redis.io/releases/redis-7.0.0.tar.gz
https://download.redis.io/releases/redis-7.0.5.tar.gz
$ wget -i download_list.txt
--2022-09-28 13:38:41-- https://download.redis.io/releases/redis-6.0.8.tar.gz
正在解析主机 download.redis.io (download.redis.io)... 45.60.125.1
正在连接 download.redis.io (download.redis.io)|45.60.125.1|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 2247528 (2.1M) [application/octet-stream]
正在保存至: “redis-6.0.8.tar.gz”

redis-6.0.8.tar.gz 100%[==================>] 2.14M 5.32MB/s 用时 0.4s

2022-09-28 13:38:42 (5.32 MB/s) - 已保存 “redis-6.0.8.tar.gz” [2247528/2247528])

--2022-09-28 13:38:42-- https://download.redis.io/releases/redis-6.2.1.tar.gz
再次使用存在的到 download.redis.io:443 的连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 2438367 (2.3M) [application/octet-stream]
正在保存至: “redis-6.2.1.tar.gz”

redis-6.2.1.tar.gz 100%[==================>] 2.33M --.-KB/s 用时 0.06s

2022-09-28 13:38:42 (37.3 MB/s) - 已保存 “redis-6.2.1.tar.gz” [2438367/2438367])

--2022-09-28 13:38:42-- https://download.redis.io/releases/redis-7.0.0.tar.gz
再次使用存在的到 download.redis.io:443 的连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 2943054 (2.8M) [application/octet-stream]
正在保存至: “redis-7.0.0.tar.gz”

redis-7.0.0.tar.gz 100%[==================>] 2.81M 3.50MB/s 用时 0.8s

2022-09-28 13:38:43 (3.50 MB/s) - 已保存 “redis-7.0.0.tar.gz” [2943054/2943054])

--2022-09-28 13:38:43-- https://download.redis.io/releases/redis-7.0.5.tar.gz
再次使用存在的到 download.redis.io:443 的连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 2968205 (2.8M) [application/octet-stream]
正在保存至: “redis-7.0.5.tar.gz”

redis-7.0.5.tar.gz 100%[==================>] 2.83M 2.14MB/s 用时 1.3s

2022-09-28 13:38:45 (2.14 MB/s) - 已保存 “redis-7.0.5.tar.gz” [2968205/2968205])

下载完毕 --2022-09-28 13:38:45--
总用时:3.6s
下载了:4 个文件,2.6s (3.90 MB/s) 中的 10M
$ ls
download_list.txt redis-6.2.1.tar.gz redis-7.0.5.tar.gz
redis-6.0.8.tar.gz redis-7.0.0.tar.gz

注:文本文件中,每一行一个 url

–limit-rate 限制下载速度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ tree
.

0 directories, 0 files
$ wget --limit-rate=1m https://download.redis.io/releases/redis-6.0.8.tar.gz
--2022-09-28 13:45:46-- https://download.redis.io/releases/redis-6.0.8.tar.gz
正在解析主机 download.redis.io (download.redis.io)... 45.60.125.1
正在连接 download.redis.io (download.redis.io)|45.60.125.1|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 2247528 (2.1M) [application/octet-stream]
正在保存至: “redis-6.0.8.tar.gz”

redis-6.0.8.tar.gz 100%[=================>] 2.14M 1.08MB/s 用时 2.0s

2022-09-28 13:45:49 (1.08 MB/s) - 已保存 “redis-6.0.8.tar.gz” [2247528/2247528])

$ tree
.
└── redis-6.0.8.tar.gz

0 directories, 1 file

注:wget 命令默认以全速下载,占用大量宽带。--limit-rate=1m 将下载速度限制为 1m/s

pip3 安装 pillow 失败

1
2
sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk
sudo apt-get install python3-dev

hostnamectl – 查看/修改当前主机的信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
luyanfeng@amax:~$ hostnamectl --help
hostnamectl [OPTIONS...] COMMAND ...

Query or change system hostname.

-h --help Show this help
--version Show package version
--no-ask-password Do not prompt for password
-H --host=[USER@]HOST Operate on remote host
-M --machine=CONTAINER Operate on local container
--transient Only set transient hostname
--static Only set static hostname
--pretty Only set pretty hostname

Commands:
status Show current hostname settings
set-hostname NAME Set system hostname
set-icon-name NAME Set icon name for host
set-chassis NAME Set chassis type for host
set-deployment NAME Set deployment environment for host
set-location NAME Set location for host
luyanfeng@amax:~$ hostnamectl
Static hostname: amax
Icon name: computer-server
Chassis: server
Machine ID: 9e3f9b2c17f34ec498bbe99396f0597d
Boot ID: 045903c8f58741f1b1862515b085885b
Operating System: Ubuntu 18.04.6 LTS
Kernel: Linux 5.4.0-126-generic
Architecture: x86-64
luyanfeng@amax:~$

pip

While Python 3.x is installed by default on Linux, pip is not installed by default.

1
sudo apt install python3-pip

为普通用户添加 sudo 权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ cd /etc/
$ ll sudoers
-r-------- 1 root root 4382 Jan 21 23:16 sudoers
# 1. 切换到root用户
$ su root
Password: # 输入root用户的密码

# 2. 修改文件权限, 暴力一点没有关系, 反正还需要改回去, 直接 777 就行
$ chmod 777 sudoers

# 3. 使用 vim 打开这个文件
$ vim sudoers

# 4. 在文件中找到这一行, 在文件偏尾部的位置
root ALL=(ALL) ALL

# 5. 照葫芦画瓢, 在下边新添加一行内容如下:
root ALL=(ALL) ALL # 原来的内容
susu ALL=(ALL) ALL # 新添加的行, susu 是需要添加 sudo 权限的用户名

# 6. 保存退出 (先按esc, 然后输入 :wq)
# 7. 将文件改回原来的权限
$ chmod 400 sudoers

Ubuntu 18.04.6 LTS 没有 root 用户但修改了 sudoers

参考文档

  1. ubuntu 修改用户权限,不小心修改了sudoers文件

  2. ubuntu 16.04 忘记root密码的处理方法

  3. Ubuntu 重置密码

问题介绍

Ubuntu 18.04.6 LTS 上,为新建的用户添加 sudo 权限,需要修改 sudoers 文件,因此 sudoers 文件的权限被更改为 777,修改完成后,由于该系统上还没有设置 root 用户,无法将 sudoers 文件的权限更改回 400

解决办法

第一步:进入 recovery 模式,创建 root 用户,设置密码

  1. 重启计算机,出现如下界面,选中如下选项,按 Enter 键。

  1. 然后选中最后有(recovery mode)的选项,推荐选择版本较高的一个。按 e ,请不要使用 Enter 键。

  1. 找到图中红色框的 recovery nomodeset 并将其删掉,再在这一行的后面输入 quiet splash rw init=/bin/bash。完成后按 F10 键。

  1. 在命令行输入 passwd,修改 root 用户密码。然后,按电源键,关机,然后按电源键,重启计算机。

第二步:用 root 用户,修改 sudoers 文件权限

1
2
3
4
5
6
7
8
$ cd /etc/

# 1. 切换到root用户
$ su root
Password: # 输入root用户的密码

# 2. 将文件改回原来的权限
$ chmod 400 sudoers

Ubuntu 18.04.6 LTS 卸载 Python3 无法进入图形界面

问题描述

  1. Ubuntu 的桌面依赖自带的 Python3,因此请不要卸载自带的 Python3。如果卸载了自带的 Python3,将不能使用图形界面,只能使用命令行

如果能够连网,可以使用下面的步骤解决。

  1. 重启电脑,在终端登录。
  2. 执行 sudo dhclient 获取 ip 地址进行网络连接,通过 ping baidu.com 验证是否能够连网。
  3. 执行 sudo apt-get install ubuntu-minimal ubuntu-standard ubuntu-desktop 安装桌面。
  4. 执行 sudo reboot 重启电脑。
  1. 由于学校的服务器需要通过图形界面,登录账号密码进行连网,因此,服务器不能连网,进而不能使用上面的解决办法。

解决

  1. 首先通过 sudo dhclient 获取 ip 地址,然后通过 ip addr 或者 ifconfig 查看到服务器的内网地址,如 10.4.3.155

  2. 通过 hostnamectl 查看服务器的操作系统和架构。显示服务器的操作系统为 Ubuntu 18.04.6 LTS,架构为 x86-64

1
2
3
4
5
6
7
8
9
$ hostnamectl 
Static hostname: amax
Icon name: computer-server
Chassis: server
Machine ID: 9e3f9b2c17f34ec498bbe99396f0597d
Boot ID: 045903c8f58741f1b1862515b085885b
Operating System: Ubuntu 18.04.6 LTS
Kernel: Linux 5.4.0-126-generic
Architecture: x86-64
  1. 在本地的电脑访问 Ubuntu Packages Search,由于服务器的操作系统为 Ubuntu 18.04.6 LTS,因此 Distribution 选择 bionic,我们以 ubuntu-minimal 包为例,如下图。

  1. 点击搜索,结果如下图。

  1. 点击搜索结果的链接 (bionic (18.04LTS)),如下图。

  1. 由于服务器的架构为 x86-64,因此,我们选择 amd64 版本,如下图。

  1. 点击 amd64,结果如下图。可以发现我们需要的包名为 ubuntu-minimal_1.417_amd64.deb,可以在镜像服务器pool/main/u/ubuntu-meta/ 子目录中下载这个包:

  1. 其中一个镜像服务器地址为:http://cz.archive.ubuntu.com/ubuntu/pool/main/。依次找到 ubuntu-minimal_1.417_amd64.deb 包,如下图。

  1. 点击 ubuntu-minimal_1.417_amd64.deb 并下载到本地电脑。进入到下载目录,执行 scp 命令将下载的包传输到服务器中。
1
2
# scp 本地文件地址 服务器帐号@内网 IP:服务器文件地址
$ scp * luyanfeng@10.4.3.155:/home/luyanfeng/programs/
  1. 通过内网 IPssh 连接服务器,执行下面命令安装 ubuntu-minimal 包。
1
$ sudo dpkg -i ubuntu-minimal_1.417_amd64.deb
  1. 一般情况下是不能安装成功的,因为 ubuntu-minimal 需要一些依赖包,需要先安装依赖包,再安装 ubuntu-minimal 包。可以根据 sudo dpkg -i ubuntu-minimal_1.417_amd64.deb 命令给出的提示,像上面那样在 Ubuntu Packages Search 中找到需要的依赖包,并下载,传输到服务器,安装。

  2. 类似的,我们需要按照上面步骤安装 ubuntu-minimalubuntu-standardubuntu-desktop 这些包,但是当安装 ubuntu-desktop 的依赖包时会显示 xxx 包未被配置 的错误。不要管它,安装其他的包。

  3. 下面是我总共安装的包。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
$ tree programs/
programs/
├── aptdaemon_1.1.1+bzr982-0ubuntu19.5_all.deb
├── foomatic-db-compressed-ppds_20180306-1_all.deb
├── gdm3_3.28.3-0ubuntu18.04.6_amd64.deb
├── gir1.2-ibus-1.0_1.5.17-3ubuntu5.3_amd64.deb
├── gnome-control-center_3.28.1-0ubuntu1_amd64.deb
├── gnome-menus_3.13.3-11ubuntu1_amd64.deb
├── gnome-session-common_3.28.1-0ubuntu2_all.deb
├── gnome-shell_3.28.3+git20190124-0ubuntu18.04.2_amd64.deb
├── gnome-shell-common_3.28.3+git20190124-0ubuntu18.04.2_all.deb
├── language-selector-common_0.188_all.deb
├── language-selector-gnome_0.188_all.deb
├── lsb-release_9.20170808ubuntu1_all.deb
├── microsoft-edge-stable_105.0.1343.42-1_amd64.deb
├── netplan.io_0.40.1_18.04.4_amd64.deb
├── nplan_0.40.1_18.04.4_all.deb
├── openprinting-ppds_20180306-1_all.deb
├── python3-apport_2.20.9-0ubuntu7.28_all.deb
├── python3-apt_1.6.5ubuntu0.5_amd64.deb
├── python3-aptdaemon_1.1.1+bzr982-0ubuntu19.5_all.deb
├── python3-aptdaemon.gtk3widgets_1.1.1+bzr982-0ubuntu19.5_all.deb
├── python3-defer_1.0.6-2build1_all.deb
├── python3-distupgrade_18.04.17_all.deb
├── python3-netifaces_0.10.4-0.1build4_amd64.deb
├── python3-software-properties_0.96.24.32.14_all.deb
├── python3-xkit_0.5.0ubuntu2_all.deb
├── python3-yaml_3.12-1build2_amd64.deb
├── software-properties-gtk_0.96.24.32.14_all.deb
├── system-config-printer-common_1.5.11-1ubuntu2_all.deb
├── ubuntu-advantage-tools_17_all.deb
├── ubuntu-desktop_1.417_amd64.deb
├── ubuntu-drivers-common_0.5.2_amd64.deb
├── ubuntu-minimal_1.417_amd64.deb
├── ubuntu-release-upgrader-core_18.04.17_all.deb
├── ubuntu-release-upgrader-gtk_18.04.17_all.deb
├── ubuntu-session_3.28.1-0ubuntu2_amd64.deb
├── ubuntu-standard_1.417_amd64.deb
├── update-manager_18.04.11_all.deb
├── update-notifier_3.192_amd64.deb
├── xorg_7.7+19ubuntu7_amd64.deb
└── xserver-xorg_7.7+19ubuntu7_amd64.deb

0 directories, 40 files
$
  1. microsoft-edge-stable_105.0.1343.42-1_amd64.deb 这个包是 edge 浏览器的安装包 (可以从 https://www.microsoft.com/zh-cn/edge 处下载),因为我需要浏览器,才能通过学校的账号连网。

  2. 这时服务器的图形界面应该可以使用了,但还是卡卡的感觉,通过 edge 连网,输入下面命令再次安装桌面。

1
2
3
4
$ sudo apt-get install -f -y
$ sudo apt-get update
$ sudo apt-get install ubuntu-minimal ubuntu-standard ubuntu-desktop
$ sudo reboot
  1. 电脑重启后,应该就会直接进入到图形界面了。

Linux 系统通过 SCP 上传文件到 Linux 服务器 (包括下载文件)

上传文件

在本地机器执行以下命令,向 Linux 服务器上传文件。

1
2
3
4
5
$ scp 本地文件地址 服务器帐号@服务器 IP:服务器文件地址
$ scp foo luyanfeng@10.4.6.15:/home/luyanfeng/my_code/temp/
luyanfeng@10.4.6.15's password:
foo 100% 0 0.0KB/s 00:00
$

下载文件

在本地机器执行以下命令,将 Linux 服务器上的文件下载至本地。

1
2
3
4
5
$ scp 服务器帐号@服务器 IP:服务器文件地址 本地文件地址 
$ scp luyanfeng@10.4.6.15:/home/luyanfeng/my_code/temp/lyf .
luyanfeng@10.4.6.15's password:
lyf 100% 0 0.0KB/s 00:00
$

Ubuntu 安装 QQ

操作系统: Ubuntu 20.04.5 LTS

方法一

腾讯已于 2022 年 12 月 30 日推出了 QQ 的 v3.0.0, 界面已经美化. 因此不建议使用方法一安装 QQ 了.

  1. 进入 Icalingua-plus-plus 项目: https://github.com/Icalingua-plus-plus/Icalingua-plus-plus .

  2. 进入其 Releases.

  3. 下载相应 (操作系统) 的发行版本, 如 icalingua_2.7.7_amd64.deb

  4. 进入下载目录, 运行下面命令安装程序:

1
sudo dpkg -i icalingua_2.7.7_amd64.deb
  1. 安装完成后,应用程序的图标如下:

  1. 输入账号密码登录 (其他选项都默认).

  1. 卸载:
1
2
3
4
5
6
7
8
$ sudo dpkg -r icalingua
(正在读取数据库 ... 系统当前共安装有 275055 个文件和目录。)
正在卸载 icalingua (2.7.7) ...
正在处理用于 hicolor-icon-theme (0.17-2) 的触发器 ...
正在处理用于 gnome-menus (3.36.0-1ubuntu1) 的触发器 ...
正在处理用于 desktop-file-utils (0.24-1ubuntu3) 的触发器 ...
正在处理用于 mime-support (3.64ubuntu1) 的触发器 ...
$

方法二

腾讯官方版本, QQ 官网: https://im.qq.com/index/ . Linux 版本安装包下载界面: https://im.qq.com/linuxqq/index.shtml , Linux 版本安装帮助界面: https://im.qq.com/linuxqq/support.html .

  1. 下载 deb 版本.

  2. 进入下载目录, 运行下面命令安装程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ sudo dpkg -i linuxqq_3.0.0-571_amd64.deb 
(正在读取数据库 ... 系统当前共安装有 274974 个文件和目录。)
准备解压 linuxqq_3.0.0-571_amd64.deb ...
正在解压 linuxqq (3.0.0-571) 并覆盖 (2.0.0-b2) ...
dpkg: 警告: 无法删除原有的目录 /usr/local/share :目录非空
dpkg: 警告: 无法删除原有的目录 /usr/local/lib :目录非空
dpkg: 警告: 无法删除原有的目录 /usr/local/bin :目录非空
dpkg: 警告: 无法删除原有的目录 /usr/local :目录非空
正在设置 linuxqq (3.0.0-571) ...
正在处理用于 hicolor-icon-theme (0.17-2) 的触发器 ...
正在处理用于 gnome-menus (3.36.0-1ubuntu1) 的触发器 ...
正在处理用于 desktop-file-utils (0.24-1ubuntu3) 的触发器 ...
正在处理用于 mime-support (3.64ubuntu1) 的触发器 ...
$
  1. 登录效果 (very good!):

.gitignore 文件

Git 中, 如果想忽略掉某个文件, 不让这个文件提交到版本库中, 可以使用 .gitignore 文件.

.gitignore 文件的创建:

1
2
# 在相应仓库的根目录中
vim .gitignore

该文件的每一行保存了一个匹配的规则, e.g.:

1
2
3
4
5
6
# 此为注释 – 将被 Git 忽略
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

.gitignore 文件的格式规范:

  1. # 为注释.

  2. 可以使用 shell正则表达式来进行模式匹配.

  3. 匹配模式最后为 / 表示忽略的是目录.

  4. 使用 ! 表示取反, (例如, 目录中包含 test.a, 并且 gitignore 文件包含 *.[oa], 如果加入 !test.a 表明忽略除 test.a 文件以外的所有后缀名为 .a 或者 .o 的文件).

.gitignore 文件只能忽略没有被 track 的文件, 如果某些文件已经被纳入了版本管理中,则 .gitignore 文件是无效的.

解决方法: 使用下面命令先把本地缓存删除 (改变成未被 track 的状态).

1
git rm -r --cached 文件/文件夹名字

重定向符号

linux 系统中, shell 命令有重定向符号 >>>.

  • shell 命令 > test.txt,表示向 test.txt 文件重新添加内容, test.txt 文件的内容会首先被清空.

  • shell 命令 >> test.txt,表示向 test.txt 文件追加内容, test.txt 文件原来的内容不会被清理掉.

apt 命令

apt-get 全称 Advanced Package Tool, 是一款适用于 UnixLinux 系统的高级包管理器. 主要用于自动从互联网的软件仓库搜索安装升级卸载软件操作系统.

使用 apt 的主流 Linux 系统包括 DebianUbuntu 变异版本.

apt-get 和 apt-cache

apt-getapt-cache 命令一般需要 root 权限.

apt 命令 命令的功能
sudo apt-get update 更新源
sudo apt-get install package 安装包
sudo apt-get install package --reinstall 重新安装包
sudo apt-get remove package 删除包
sudo apt-get -f install 修复安装
sudo apt-get remove package --purge 删除包,包括配置文件等
sudo apt-get build-dep package 安装相关的编译环境
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-get source package 下载该包的源代码
sudo apt-get clean && sudo apt-get autoclean 清理无用的包
sudo apt-get check 检查是否有损坏的依赖
sudo apt-cache search package 搜索软件包
sudo apt-cache show package 获取包的相关信息,如说明、大小、版本等
sudo apt-cache depends package 了解使用该包依赖那些包
sudo apt-cache rdepends package 查看该包被哪些包依赖

apt

apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合. apt 可以看作 apt-getapt-cache 命令的子集.

apt 和 apt-get 命令之间的区别

虽然 aptapt-get 有一些类似的命令选项, 但它并不能完全向下兼容 apt-get 命令. 也就是说, 可以用 apt 替换部分 apt-get 系列命令, 但不是全部.

apt 命令 取代的命令 命令的功能
apt install apt-get install 安装软件包
apt remove apt-get remove 移除软件包
apt purge apt-get purge 移除软件包及配置文件
apt update apt-get update 刷新存储库索引
apt upgrade apt-get upgrade 升级所有可升级的软件包
apt autoremove apt-get autoremove 自动删除不需要的包
apt full-upgrade apt-get dist-upgrade 在升级软件包时自动处理依赖关系
apt search apt-cache search 搜索应用程序
apt show apt-cache show 显示安装细节

当然,apt 还有一些自己的命令:

新的 apt 命令 命令的功能
apt list 根据名称列出软件包
apt edit-sources 编辑软件源信息文件

ssh 免密登录服务器

  1. 在本地的计算机上生成密钥:
1
2
3
4
5
# 创建 SSH,一路回车
$ ssh-keygen -t rsa -C "youremail"

# 例子
$ ssh-keygen -t rsa -C "3555028709@qq.com"
  1. 在当前用户的 home 目录下生成了 .ssh 目录,里面包含 id_rsaid_rsa.pubknown_hosts 三个文件:

SSH,是一个密钥,id_rsa 是这台电脑的私人密钥,不能给别人看,id_rsa.pub 是公共密钥,可以随便给别人看。

  1. 查看 id_rsa.pub:
1
2
3
$ cat ~/.ssh/id_rsa.pub 
ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= 3555028709@qq.com
$
  1. 登录服务器, 将本地 ssh 公钥文件的内容追加到服务器中 .ssh 目录下的 authorized_keys 文件 (注意是追加到, 有可能有其他人也配置了免密登录):
1
2
3
4
5
$ mkdir -p ~/.ssh
# 将上面查到的公钥粘贴到 authorized_keys
$ vim ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh

Ubuntu 安装 OpenCV

1
$ sudo apt install libopencv-dev

Ubuntu 安装 Eigen

1
$ sudo apt install libeigen3-dev

VSCode background-cover 插件问题

操作系统: Ubuntu 20.04.4 LTS .

background-cover 插件 link: https://marketplace.visualstudio.com/items?itemName=manasxx.background-cover .

Fix VSCode Checksums 插件 link: https://marketplace.visualstudio.com/items?itemName=lehni.vscode-fix-checksums .

  1. background-cover 安装完背景图片不显示 (使用下面命令提升 VSCode 的权限)
1
sudo chown -R $(whoami) /usr/share/code
  1. VSCode 顶部显示 (不受支持) 问题, 安装 Fix VSCode Checksums 插件, 安装完成后, 在 VSCode 中按 Ctrl+Shift+P 使用下面命令启动插件:
1
Fix Checksums: Apply
  1. 之后重启 VSCode.

无法 pinggithub.com

  1. 通过 ipaddress 查询 github.comgithub.global.ssl.fastly.net 的 IP 地址.

  2. 修改 hosts 文件, 加入上面查询的 IP 地址, hosts 文件内容如下.

1
$ sudo vim /etc/hosts
1
2
3
4
5
6
7
8
9
10
11
12
127.0.0.1       localhost
127.0.1.1 amax

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

+ 140.82.114.3 github.com
+ 199.232.69.194 github.global.ssl.fastly.net
  1. 重启网络:
1
$ sudo /etc/init.d/networking restart

apt-get: Error while loading shared libraries:libstdc++.so.6

原教程链接: https://zhuanlan.zhihu.com/p/428011742 .

当运行了下图的命令后出现了 apt-get: Error while loading shared libraries:libstdc++.so.6: cannot open shared object file: No such file or directory 问题,这时千万别重启电脑

解决方案
  1. 运行下面命令。
1
2
3
4
5
6
# 登录 root 用户
$ su root

# "include /etc/ld.so.conf.d/*.conf"下方增加"/usr/local/lib"
$ vim /etc/ld.so.conf
$ cat /etc/ld.so.conf

输出:

1
2
include /etc/ld.so.conf.d/*.conf
/usr/local/lib
  1. 运行下面命令。
1
2
3
4
5
6
$ /sbin/ldconfig -v
$ apt-get install lib32stdc++6
$ apt --fix-broken install

# 退出 root 用户
$ exit

ubuntu 如何查看磁盘空间

源教程地址: https://jingyan.baidu.com/article/39810a23bafcdab637fda64a.html .

方法 1

1
df -ah

方法 2

1
sudo fdisk -l

linux 清空文件内容的方式

源教程地址: https://blog.csdn.net/pingzhuyan/article/details/128534882 .

清空文件内容源教程介绍了很多种,我在这里只介绍两种:

第一种:

1
> access.log

第二种:

1
echo > access.log

linux系统设置root初始化密码

源教程地址: https://blog.csdn.net/weixin_44259233/article/details/125659866 .

一个新的linux系统是没有root密码的,需要设置root默认密码。

安装好Linux之后,打开终端,输入su命令,会出现如下情况。

1
2
3
user@domain:~$ su
密码:
su:认证失败

其原因是由于第一次使用,这时候还未设置root的密码,我们可以以user用户对其进行设置。


使用下面命令为 root 用户设置密码:

1
sudo passwd

Ubuntu 安装 g++

源教程地址: https://blog.csdn.net/dxk539687357/article/details/128748062 .

1
$ sudo apt-get install build-essential

安装 ubuntu

亲身实践过的:

  1. 官方安装教程: https://ubuntu.com/tutorials/install-ubuntu-desktop#1-overview .

  2. 安装英伟达NVIDIA显卡驱动: https://blog.csdn.net/m0_73860872/article/details/127276979 .

  3. 安装nvidia驱动: https://blog.csdn.net/weixin_55749979/article/details/122694538 .

未实践过的:

  1. 教你彻底卸载Ubuntu双系统,去污不残留: https://blog.csdn.net/qq_42257666/article/details/120721561 .

  2. ubuntu20.04安装NVIDIA驱动: https://blog.csdn.net/weixin_64184244/article/details/130567108 .

磁盘挂载

教程如下:

  1. https://blog.csdn.net/weixin_38090079/article/details/131723705

  2. https://blog.csdn.net/m0_50932526/article/details/131430538

  3. https://blog.csdn.net/weixin_45497582/article/details/128447419

  4. https://www.cnblogs.com/Lx-learner/p/17038322.html

目录大小

源教程地址:https://blog.csdn.net/weixin_43025343/article/details/131460575

1
2
3
4
$ du -h <文件名>

# 例子
$ sudo du -h /home --max-depth=1

结语

第二十八篇博文写完,开心!!!!

今天,也是充满希望的一天。