Ubuntu 使用介绍
开发公司
Canonical Ltd. 是 Ubuntu Linux 操作系统背后的公司,一家由南非企业家马克·沙特尔沃思(Mark Shuttleworth)创立的私营公司,其主要使命是推广和促进开源软件项目的发展。它通过向企业提供专业的开源软件支持和服务,确保开源技术能够在商业环境中可靠、安全地应用。
- 核心产品与业务:
- Ubuntu: Canonical 是最著名的 Linux 发行版 Ubuntu 的发行商和主要维护者。Ubuntu 被广泛应用于个人电脑桌面、服务器、云计算环境(它是大多数公有云环境中最流行的操作系统)、物联网(IoT)、自动驾驶以及机器人等领域。
- 企业服务: 公司的主要商业模式是通过提供企业级支持、安全服务和咨询来盈利。他们为使用 Ubuntu 等开源软件的企业客户提供保障,包括安全更新、长期维护支持(LTS)和技术咨询服务。
- 开源理念: Canonical 致力于提供可以自由获取、部署、维护和升级的开源软件。他们不区分商业版和社区版,而是将高质量的发行版免费提供给所有人,并通过服务来获得收入。
- 全球布局:
- Canonical 的总部设在英国伦敦。
- 它在全球各地设有办事处,包括波士顿、圣保罗、蒙特利尔、上海和台北。
- 在中国大陆,Canonical 设有子公司科能(上海)软件科技有限公司。
- 其他重要项目/平台:
- Launchpad: 这是一个用于协作开发、缺陷跟踪和软件本地化的平台。
- 云计算/容器技术: Canonical 积极参与和支持 OpenStack、Kubernetes(提供 MicroK8s 等轻量级解决方案)、LXD 等云和容器技术,为企业提供部署和管理云环境的工具和服务。
基础知识
- 版本
- 从 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
- Fcitx 是一个轻量级输入方法框架,旨在为 Linux 提供独立的环境语言支持
- 推荐使用 Fcitx5,不要使用
apt remove ibus
- chrome 输入不了中文,可以回退版本,历史版本下载
- 如何打出顿号
- 解决输入法无法输入中文中括号
【
和 】
,修改文件,并重启输入法
$ 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
时显示 CPU、内存、网速
sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor -y
sudo apt-get update
sudo apt-get install indicator-sysmonitor
无人值守升级
apt install unattended-upgrades
unattended-upgrades --dry-run --debug
systemctl start unattended-upgrades
# 配置文件
$ cat /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}:${distro_codename}-updates";
"${distro_id}:${distro_codename}-proposed";
"${distro_id}:${distro_codename}-backports";
};
Unattended-Upgrade::Package-Blacklist {
"package-name-xx";
"package-name-xxx";
};
密钥环解锁密码
去掉默认密钥环的密码方法,步骤如下:
- 打开应用程序 -> 附件 ->
密码和加密密钥
(或在终端中输入 seahorse
)
- 切换到密码选项卡
- 找到一个密码密钥环
- 右键更改密码
- 然后什么都不要填
- 直接提交
关闭自动更新命令
# 关闭 Update-Package-Lists
sudo sed -i.bak 's/1/0/' /etc/apt/apt.conf.d/10periodic
# 关闭 unattended-upgrades
sudo sed -i.bak 's/1/0/' /etc/apt/apt.conf.d/20auto-upgrades
## 也可以通过以下命令选择 No
sudo dpkg-reconfigure unattended-upgrades
# 禁用 unattended-upgrades 服务
sudo systemctl stop unattended-upgrades
sudo systemctl disable unattended-upgrades
# 可选:移除 unattended-upgrades (sysin)
#sudo apt remove unattended-upgrades
禁用内核更新
sudo apt-mark hold linux-generic linux-image-generic linux-headers-generic
# 恢复内核更新
sudo apt-mark unhold linux-generic linux-image-generic linux-headers-generic
或在下面文件找到 Package-Blacklist 字段,加入如下内容
$ sudo vi /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Package-Blacklist {
"linux-generic";
"linux-image-generic";
"linux-headers-generic";
};
安装
- USB 启动盘制作
- rufus
- etcher Flash OS images to SD cards & USB drives, safely and easily
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" # 排除的路径