Ubuntu 18.04的使用

从最初的Ubuntu 12.04到现在的18.04,随着Ubuntu的更新很多以前的配置无法继续使用,重新开一个帖子,记录新版本的命令和配置。 以下命令,在Ubuntu Server 18.04上测试通过。

0、查看系统信息

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
echo ""
echo "----------当前计算机信息---------------"
# 显示当前系统及版本号
echo 系统版本:$'\t' `lsb_release -a 2>&1 | grep -i 'description' | cut -d$'\t' -f2`
# 显示内核及版本号
# Kernel=`uname -s -r`
echo 内核版本:$'\t' `uname -s -r`
echo ""

# 显示CPU信息
echo CPU型号:
grep -i 'model name' /proc/cpuinfo
echo ""

# 显示显卡信息
echo 显卡信息:
lspci | grep -i 'vga'
echo ""

# 显示网口信息
echo 以太网信息:
lspci | grep -i 'Ethernet'
echo ""

# 显示内存信息
echo 内存容量:`grep -i 'MemTotal' /proc/meminfo | cut -d: -f2`
echo ""

# 显示硬盘信息
echo 硬盘信息:
lsblk -d -o NAME,SIZE,TYPE,MOUNTPOINT

echo ""
echo "-------------DONE---------------------"
echo ""

1、安装php(7.2)nginxmariadb三件套

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
# 1、nginx 和 mariadb

PKGS="nginx"
PKGS="$PKGS mariadb-server mariadb-client"

# 2、php 7.2

PKGS="$PKGS php7.2-cli"
PKGS="$PKGS php7.2-ldap"
PKGS="$PKGS php7.2-fpm"
PKGS="$PKGS php7.2-mysql"
PKGS="$PKGS php7.2-mbstring"
PKGS="$PKGS php7.2-xml"
PKGS="$PKGS php7.2-xmlrpc"
PKGS="$PKGS php7.2-curl"
PKGS="$PKGS php7.2-gd"
PKGS="$PKGS php7.2-imap"
PKGS="$PKGS php7.2-intl"
PKGS="$PKGS php-imagick"
PKGS="$PKGS php7.2-zip"

#PKGS="$PKGS php7.2-sqlite3"
#PKGS="$PKGS php-memcached"
#PKGS="$PKGS php-imagick"
#PKGS="$PKGS php7.2-readline"
#PKGS="$PKGS php7.2-common"
#PKGS="$PKGS php7.2-bcmath"
#PKGS="$PKGS php7.2-soap"
#PKGS="$PKGS php7.2-tidy"
#PKGS="$PKGS php7.2-xsl"
#PKGS="$PKGS php7.2-opcache"
#PKGS="$PKGS php-apcu"

# 3、执行安装命令
sudo apt install -y $PKGS

2、配置固定IP地址

编辑/etc/netplan/01-netcfg.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
enp8s0:
optional: true
dhcp4: yes
dhcp6: yes
eno1:
optional: true
dhcp4: no
addresses: [10.3.89.198/24]
gateway4: 10.3.89.1
nameservers:
addresses: [202.119.248.66,218.2.135.1]
dhcp6: yes

注意,每个网口的optinal要填上,否则如果网线未连接,启动时会一直等待该网口,导致启动时间超长。配置完成之后,使用命令sudo netplan apply进行应用

3、随时监控系统状况的watch命令

如果需要对系统运行时的状态进行监控,如CPU、显卡或硬盘的温度等进行监控,可以使用watch命令。

首先创建脚本thermal.sh,一次性运行所有监控程序:

1
2
3
4
5
6
7
#!/bin/bash
# CPU温度
sensors
# 硬盘温度
sudo hddtemp /dev/sda
# 显卡(这里是N卡)
nvidia-smi

然后执行watch命令:

1
watch -n 1 ./thermal.sh

可以编辑一个alias加入bash_aliases:

1
alias wt='watch -n 1 /{full_path}/thermal.sh'
ctrl+c终止运行

4、解决更新时无网络授权问题:

在使用sudo apt update时,通常使用国内镜像进行加速,比如清华大学镜像站。常规方案是编辑/etc/apt/sources.list

1
2
3
4
5
6
7
# 删除原有备份
sudo mv /etc/apt/sources.list.bak /etc/apt/sources.list
# 复制一个备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 修改
sudo sed -i 'sed -i 's/http:\/\/us.archive.ubuntu.com/https:\/\/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list

此时执行更新命令,如果仅有IPv6网络,IPv4没有授权,那么http://security.ubuntu.com 会报错,提示无网络访问权限。

编辑/etc/hosts,增加2001:67c:1360:8001::17 security.ubuntu.com即可。具体IP地址可以通过pin6host命令来获取

1
2
ping6 security.ubuntu.com
# host -t AAAA security.ubuntu.com
以后访问security.ubuntu.com均通过IPv6进行,不走IPv4。

5、使用代理安装第三方PPA

  Ubuntu 18.04自带的ffmpeg太老,想更新以下,找到了第三方的一个PPA,Jonathon F : ffmpeg-4,无奈服务器没有ipv4网络访问授权,考虑使用代理进行安装。

  1) 打开apt代理,添加PPA库:

1
2
3
4
sudo add-apt-repository ppa:jonathonf/ffmpeg-4

# 出现错误:
# Error: retrieving gpg key timed out

  2) 手动添加gpg key:

  (1) 访问Jonathon F : ffmpeg-4,进入页面;

  (2) 在PPA页面内,点击:Technical details about this PPA,找到Signing key:,点击(What is this?)前的一串Key。页面跳转到https://keyserver.ubuntu.com/pks/lookup?...,点击sig sig后面的签名key,出现一个公钥:

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
-----BEGIN PGP PUBLIC KEY BLOCK-----

xsFNBFSs/wABEAC2gPjfZeJLl9+KsSG2GvMMnPHJ/rpuFPq7ODPtRxuWscEs1VtN
BcHuy6spxm2Iss2611Jp29KU/2J2d1KwmCaBFuwOwmZGioQ+U6isa2XQnOdYAAV3
3b7FJKtbb8TugupdmuHkSnTYPTQRl1CEOz3sdkS7dizPitZYCK4w1xosJq/eaYrh
0F2POb+2bjlqwHPyTxf6za1vPk5Gpo2OGhJ6ITeS2YG15MRore+0j00RZa5kNPOX
7QBFtoFl8hcHCNw09rmnJj1ODZ9rLgPI0yiikf0J5ivLKjCoiJJlzw9AE8HslkX0
a4cYAC0cCFnKQMoX1ja3avtuw4rd8yDwkZofez8iPNYUYJOIQrh1jrjLWaY8VgXy
FRYJiJAeKz7herI/aP+mMW6Tw5TVoDp7sGqxCYwTSLsZTTEvfq+kCtKELfuTFrLE
Ayzx9X2CWqvM086bAt07B3SWQJgs8VdgWom0zKhk1AQiMDkgjnoQoX9vMy8agV4g
kOxsJAp7Y7hPrAn5swd4lRbbdvHofWlZiQ/0Jnw0kP28+MX0Q8uhOHH9ynZiFLu+
AzJVlya46nxNT8P+rrlEcCJxF2XlgRrHqJdyFbSGMGe7ZmoermvDdwVMaVdvETYA
5a9gyT42aFbkfTam9V7mLKYCtj02fsWQA/LqBqkZXccv6v+boCgKhzR+VwARAQAB
zR5MYXVuY2hwYWQgUFBBIGZvciBKIEZlcm55aG91Z2jCwXgEEwECACIFAlSs/wAC
GwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEIz2OtPwb8ZZJBoP/3e6Phxo
x3BXOv+Jv4EQ2Ns25F+jIFYyRtobGE+Tx/lmeOEwfQptp2xqJ4upWn9qVR8SG0qf
pG2TmcxiufxHq7n0T+ul3683RPL2CvfeCHqSzw8iO9iAQ3d6m0jsTrsS4mGcpb0x
9a21wIL31R6TMp8vpwsUvTeCY9/LD2uruLn3dDt8fZM0nBu3s93GhiQwsHjFVupz
ebJymw5+yJRmyIz4hoJrBNtxgvrl8sY2l5ze96/U4dUuRmd3NhPW5x8K3Eb2ohMe
zrluf2c76/aLGWd/curkBgGS2a9gYIXKsNpp6NvOZDzOt2e6V4zHHACtSCvL6Voa
0LPkC2LJENl6bUfARTofmmkcGo8s3mwKakTFTADSUI2dCcCJ6flbpMwt31ZEmb+b
4GI+oVgqfsIVCwAMgCeu+97e7JnMEAUaRp4CX350ww6DtG/CoZLinX+GTbxjUhIK
izC0gBlxac8h+Iw//0AT/MjUGbEUQQogn1BKPh56NhL60VFAz1ngew3kCUyn3F1b
GLSysLK9d813dxtiQEjnSeAa6onR0pGHSD4nFjQAKbQcqyuVSyV9xWOyLShx3ExT
Do1eNe8P1PPekh99iaBU9IAtUJmJAHexhPXvoNcYtQwLPlJlkXYtqd5/lll+SeAN
tNM8R2lljdCtbCCm7A0wAKAeiZ1RJHIdeExb
=jENS
-----END PGP PUBLIC KEY BLOCK-----
  (3) 将上述公钥保存为一个文件,如ffmpeg_gpg.key,使用如下命令添加该公钥:
1
2
3
4
sudo apt-key add ffmpeg_gpg.key

# 显示
# OK
  到这里,第三方库已经安装好了,开始更新

1
2
3
4
5
6
# 如果已经安装过,先卸载
# sudo apt remove ffmpeg
# sudo apt autoremove

sudo apt update
sudo apt install ffmpeg

  安装时会出现一堆错误,主要原因是使用XX.Net做代理,SSL验证会错误。不过没关系,launchpad.net可以访问,安装失败后,去掉代理重新执行安装命令即可完成安装。

  (4) ffmpeg命令冲突的解决

  系统里安装anaconda,在anaconda3/bin目录下,同样有ffmpegffprobe两个可执行文件,如果不作处理,默认会运行这两个程序,而这两个程序不支持h264编码。一个简单的解决办法,使用alias,编辑~/.bash_aliases,增加如下内容:

1
2
alias ffmpeg="/usr/bin/ffmpeg "
alias ffprobe="/usr/bin/ffprobe "

  运行source ~/.bashrc重新激活一下alias即可。

  (5) 测试:

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
~$ ffmpeg -version
ffmpeg version 4.1.4-0york3~18.04 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
configuration: --prefix=/usr --extra-version='0york3~18.04' --toolchain=hardened
--libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64
--enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth
--enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray
--enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite
--enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme
--enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg
--enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband
--enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh
--enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx
--enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid
--enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl
--enable-sdl2 --enable-nonfree --enable-libfdk-aac --enable-libdc1394 --enable-libdrm
--enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100

~$ ffmpeg -encoders | grep 264
V..... libx264 libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
V..... libx264rgb libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)
V..... h264_omx OpenMAX IL H.264 video encoder (codec h264)
V..... h264_v4l2m2m V4L2 mem2mem H.264 encoder wrapper (codec h264)
V..... h264_vaapi H.264/AVC (VAAPI) (codec h264)

6、修改默认安装语言(修复显示日期乱码)

  以下命令测试版本为ubuntu 14.04 LTSubuntu 16.04 LTS

1
2
3
4
sudo locale-gen zh_CN
sudo locale-gen zh_CN.UTF-8
sudo dpkg-reconfigure locales
sudo update-locale LANG="zh_CN.UTF-8" LANGUAGE="zh_CN"

  退出shell,重新登录后起作用。测试,使用命令locale,成功后输出如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
user@2019:~$ locale
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8

7、批量重命名带数字的文件

在b站上下载的很多合集里,文件名包含数字序列,如 xxxP9. 1.xxx xxx.P9. 2.xxx xxx.P10 .1.xxx,现需要将其重新命名为:xxxP09.01.xxx xxx.P09.02.xxx xxx.P10.01.xxx

1
2
3
4
5
6
7
8
# 参数: 
# -n dry-run模式,并未实际运行,可用于测试命令,
# -v 运行命令并显示受影响的文件
# 1个数字,使用前补0方式命名
rename -n 's/P(\d).\ (\d)/P0$1.0$2/' *.mp4
# 2个数字,移除空格
rename -v 's/P(\d{2}).\ (\d{2})/P$1.$2/' *.mp4

8、安装g++ 11

Ubuntu 18.04自带的g++版本是7.5

1
2
3
4
5
$ g++7 --version
# 一堆输出....
# 最后一句
gcc version 7.5.0

如果希望安装新版的g++,需要使用PPAubuntu-toolchain-r/test:

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
# 1. 添加PPA,已有可以略过
$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test

# 2. 安装
$ sudo apt install gcc-11 g++-11

# 3.修改默认编译器为g++11
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 --slave /usr/bin/g++ g++ /usr/bin/g++-11 --slave /usr/bin/gcov gcov /usr/bin/gcov-11
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7 --slave /usr/bin/gcov gcov /usr/bin/gcov-7
# 4. 修改默认版本
$ sudo update-alternatives --config gcc

# 有 2 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。
# 选择 路径 优先级 状态
# ------------------------------------------------------------
# * 0 /usr/bin/gcc-11 110 自动模式
# 1 /usr/bin/gcc-11 110 手动模式
# 2 /usr/bin/gcc-7 70 手动模式

# 5. 测试
$ gcc -v
# 输出
# Using built-in specs.
# COLLECT_GCC=g++
# COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper
# OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
# OFFLOAD_TARGET_DEFAULT=1
# Target: x86_64-linux-gnu
# Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.1.0-1ubuntu1~18.04.1' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --disable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-YRKbe7/gcc-11-11.1.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-YRKbe7/gcc-11-11.1.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
# Thread model: posix
# Supported LTO compression algorithms: zlib zstd
# gcc version 11.1.0 (Ubuntu 11.1.0-1ubuntu1~18.04.1)


X、黑群晖

设置周期任务

1
2
3
sudo vi /etc/crontab
sudo synoservice --restart crond