Ubuntu 使用介绍
基础知识
- 版本
- 从 2004 年 10 月,每 6 个月发一个新版,命名格式为:
Y.MM
即 年.月
- 普通版本 18 个月支持
- 长期支持板
LTS(Long Term Support)
5 年支持,双年的 04 月发布的为长期支持版,如 22.04
22.04
升级到 24.04
命令:sudo do-release-upgrade -d
- iso 下载地址
- cloud-images
- ubuntu 默认的
sh
是 dash
,切换为 bash
命令:sudo dpkg-reconfigure dash
输入 no
- 默认 dash 解析 bash if 语法报错:
[: XXXX: unexpected operator
,需要使用 dash 语法,如 bash 的 ==
使用 =
替代
/etc/localtime
时区文件,源文件在 /usr/share/zoneinfo
目录下
版本
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.5 LTS
Release: 20.04
Codename: focal
$ cat /etc/issue
Ubuntu 20.04.5 LTS \n \l
machine-id
参考
/var/lib/dbus/machine-id
/etc/machine-id
$ ls -lhart /etc/machine-id
-r--r--r-- 1 root root 33 Jan 13 2022 /etc/machine-id
$ ls -lhart /var/lib/dbus/machine-id
lrwxrwxrwx 1 root root 15 Jan 13 2022 /var/lib/dbus/machine-id -> /etc/machine-id
$ cat /etc/machine-id
62a45cd2213b47fe9d63b63df55297dd
rm -f /etc/machine-id /var/lib/dbus/machine-id
dbus-uuidgen --ensure=/etc/machine-id
dbus-uuidgen --ensure
Home 目录下中文目录为英文
# 环境变量
export LANG=en_US
# 执行
xdg-user-dirs-gtk-update
# 弹出页面,点击update
# 环境变量
export LANG=zh_CN.UTF-8
# 执行
xdg-user-dirs-gtk-update
# 弹出页面,点击保留旧的名称
命令行和图形桌面模式切换
- 按
Ctrl + Alt + (F1~F6中的任意一个)
进入命令行模式 - 按
Ctrl + Alt + F7
进入图形桌面模式
google pinyin
- 如何打出顿号
- 解决输入法无法输入中文中括号
【
和 】
,修改文件,并重启输入法
$ sudo vim /usr/share/fcitx/data/punc.mb.zh_CN
[ 【
] 】
初始化脚本
# dns
sed 's/#DNS=/DNS=223.5.5.5 223.6.6.6/g' -i /etc/systemd/resolved.conf
systemctl restart systemd-resolved.service
# apt
sed 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' -i /etc/apt/sources.list.d/ubuntu.sources
sed 's/cn.archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' -i /etc/apt/sources.list.d/ubuntu.sources
apt update
apt install vim curl wget psmisc tree tcpdump lrzsz fping unzip screen htop btop iotop iftop git rsync gcc bash-completion make ca-certificates curl jq vim wget net-tools python-is-python3 -y
# time
apt install systemd-timesyncd -y
sed 's/#NTP=/NTP=ntp.aliyun.com/g' -i /etc/systemd/timesyncd.conf
systemctl restart systemd-timesyncd.service
# pip
apt install python3-full python3-pip python-is-python3 -y
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
mv /root/.config/pip/pip.conf /etc/
# ssh
sed 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' -i /etc/ssh/sshd_config
sed 's/#PasswordAuthentication yes/PasswordAuthentication yes/g' -i /etc/ssh/sshd_config
systemctl restart ssh.service
# disable upgrade
sudo systemctl stop apt-daily.service
sudo systemctl disable apt-daily.service
sudo systemctl stop apt-daily-upgrade.timer
sudo systemctl disable apt-daily-upgrade.timer
# ansible
# apt install python3-pip -y
pip3 install ansible --break-system-packages
# container
apt install docker.io docker-compose -y
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ghihfm4j.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
# clean
apt clean all
history -c
Gnome
- GVFS 是 GNOME 桌面系统的虚拟文件系统,支持通过 SFTP、FTP、WebDAV、SMB 等访问远程数据,GVFS 包含两个部分:
- GIO 作为 GLib 的一部分的新共享库,提供了 针对 GVFS 的 API
- GVFS 本身是一个包含多种文件系统和协议(如 SFTP、FTP、DAV、SMB 和 ObexFTP)支持的后台软件包
- GVFS 默认挂载点
/run/user/1000/gvfs
F&Q
Ubuntu 无法打开 terminal 之修复
Ubuntu 一般可以安装 XTerm、Konsole、Gnome-Terminal(即默认的 Terminal)等,通过 Ubuntu Software 安装 XTerm 即可进入 bash
重启 Gnome
Authentication is required to run gvfsd-admin daemon
alt + F2
在弹出框中输入 r
回车确定重启(该方法重启 Gnome 时当前窗口将消失,但正在运行的应用程序会继续运行)
docker 镜像
Ubuntu docker 镜像默认最小化安装(不包含 doc 等),使用如下命令解除该限制:
yes | unminimize
Syntax error: Bad for loop variable
Ubuntu 中使用 C 语言的for((i=1;i<10;i++)); do
出现如下错误
$ ls -lh /bin/sh
lrwxrwxrwx 1 root root 4 Jan 13 2022 /bin/sh -> dash
dpkg-reconfigure dash
for i in `seq $num`; do
echo $i
done
mlocate db 占用很多空间问题
- 当系统文件很多时,
/var/lib/mlocate/
会占用很多空间 - 解决方式
停止服务
sudo killall updatedb.mlocate
# 或
sudo kill -9 <PID>
停止每天自动更新 db
sudo chmod -x /etc/cron.daily/mlocate
# 或直接卸载
apt remove locate mlocate
yum remove mlocate
释放空间
rm -rf /var/lib/mlocate/*
可以通过配置文件 /etc/updatedb.conf
减少采集的文件数量
PRUNE_BIND_MOUNTS = "yes" # 是否限制
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs" # 排除的文件系统类型
PRUNENAMES = ".git .hg .svn" # 排除的文件夹
PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp /freeoa" # 排除的路径