ubuntu日常使用经验记录

发布时间 2023-10-18 12:23:06作者: youhuiji

Linux-daily-use

本文所有记录都是在ubuntu22.04版本上验证配置,其它版本可能并不适用,请谨慎参考
本文可能涉及到的桌面操作都是KDE桌面环境


常用Linux命令

# 查找命令
find / -name Your_want_find_file_name 2>/dev/null

# 添加用户
sudo adduser user_name

# 添加用户sudo权限
sudo usermod -a -G sudo user_name

# 删除用户同时删除用户文件夹
sudo userdel -r user_name
# 验证是否赋权成功
# 首先要先让目标用户退出系统
logout
sudo whoami

# 移除用户sudo权限
sudo deluser user_name sudo
# 验证是否移除成功
sudo -l -U user_name


# 添加软链接 软链接类似于C++中的指针 告诉系统某个需要索引文件的位置
ln -s source_file_name target_file_name
# 添加硬链接 硬链接会创建独立的虚拟文件 类似于一个文件的副本 具有相同的inode
ln source_file_name target_file_name
# 只能对处于同一存储媒体的文件创建硬链接。要想在不同存储媒体的文件之间创建链接,只能使用软链接。
# 所以一般情况下都是使用软链接 并且一般不创建软链接文件的软链接,这样会形成混乱的链接,并且链接极易断裂

# 查看系统登录日志
sudo cat /var/log/auth.log

# 显示系统中所有用户最近一次登陆的信息
lastlog


# 查看显卡
ubuntu-drivers devices




镜像源

  • 备份默认配置文件
sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
  • 修改sources.list文件
# 此处使用华为镜像源 速度一般 胜在稳定 
# 此处也可以更换腾讯源 速度快   官方镜像源链接:https://mirrors.tencent.com/
sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
  • 更新索引
sudo apt-get update 

sudo apt-get upgrade

输入法

参考博文链接:https://zhuanlan.zhihu.com/p/508797663

本节配置是在KDE桌面环境下

其它桌面环境如gnome、xfce等请谨慎参考

  • 安装依赖
# https://blog.allwens.work/useFcitx5/
sudo apt install fcitx5 fcitx5-frontend-qt5 fcitx5-frontend-gtk3 fcitx5-frontend-gtk2 fcitx5-chinese-addons

sudo apt install kde-config-fcitx5

sudo apt install fcitx5-chinese-addons fcitx5-material-color
  • 设置开机自启

  • 通过 设置 -> 区域设置 -> 输入法 添加中文,在 设置 -> 区域设置 -> 输入法 -> 配置附加组件 -> Classic User Inteface -> 主题 中更改主题

  • 中英文切换快捷键 Ctrl+Space


注册系统服务

以创建npc.service为例

  • 创建npc.service文件
# 保证已找到npc所在目录
./npc -version
# 将npc可执行文件复制到用户的bin目录中
sudo cp npc /usr/local/bin/
# 查看是否可以正常识别
npc --version

# 进入系统服务配置文件目录
cd /usr/lib/systemd/system
# 创建你的目标服务文件 服务名.service
sudo touch npc.service

sudo vim npc.service

## 将以下文件复制到vim编辑框中  以下配置以NPC为例
[Unit] 
Description=Stop kodi and start NPC 
After=kodi.target 

[Service] 
Type=simple 
# 服务启动时 所需的执行命令 注意这里需要自行配置参数
# 如果是frpc命令为-->  frpc -c /usr/local/bin/frpc.ini 
ExecStart=npc -server=xxx.xxx.xxxxx:xxxx -vkey=xxxxxx 
Restart=always 
RestartSec=2 
StartLimitInterval=10 
PrivateTmp=true 

[Install] 
WantedBy=multi-user.target
## npc.service config end
  • 启动服务
# reload units
sudo systemctl daemon-reload
# 允许服务自启 
sudo systemctl enable npc
# 启动服务
sudo systemctl start npc
# 查看启动状态
systemctl status npc

# 如果想停止服务
sudo systemctl stop npc

# 重启服务
sudo systemctl restart npc

SSH

  • 卸载原有系统安装的openssh服务
sudo apt remove openssh-server
  • 安装openssh
sudo apt install openssh-server
  • 允许ssh自启
sudo systemctl enable ssh
sudo systemctl start ssh
sudo systemctl status ssh
  • 修改配置文件:/etc/ssh/sshd_config
sudo apt install vim
sudo vim /etc/ssh/sshd_config

#ssh服务监听端口号
Port 22
#允许通过用户名密码方式登入
PasswordAuthentication yes
#允许root用户登入
PermitRootLogin yes
# 密钥验证
PubkeyAuthentication yes
#监听地址
ListenAddress 0.0.0.0   # 0.0.0.0表示监听所有IPv4的地址   出于安全考虑,也可以指定监听地址,这时需要将主机设置为固定IP地址
  • 如果是局域网下个人配置的服务器,最好是将个人服务器IP地址设置为固定地址

    • 如果是 ubuntu 系统的话,且系统版本高于 version-18.0,IP 地址配置文件存储在 /etc/netplan中

    • 修改该目录文件下的 .yaml文件,配置可参考如下

    •   network:
          ethernets:
            eth0: # 网卡
              dhcp4: false # 关闭dhcp功能
              addresses:
                - 192.168.137.10/24 # 所要设置的地址
              routes:
                - to: default
                  via: 192.168.137.1 # 路由器或交换机地址 应该是可以不设置的,可以保持默认
              nameservers:
                addresses: [] # 这里填写dns服务器地址,可以使用阿里dns,地址为 [223.5.5.5,223.6.6.6]
          version: 2 # 网络配置文件版本,现在默认是version-2版本
      
    • 重启网络服务

    •   # 重启网络服务
        sudo netplan applay
        
        # 重启ssh服务
        sudo service ssh restart
      
  • 提高ssh安全性

# 可参考链接 : https://blog.csdn.net/cynthrial/article/details/82319498

# 本地主机生成密钥对
ssh-keygen

# 禁止服务器Root用户登录(服务器sshd_config)
PermitRootLogin no
#禁止通过用户名密码方式登入(服务器sshd_config)
PasswordAuthentication no

# 将本机的公钥字符串复制到服务器目录"~/.ssh/authorized_keys" 若服务器中没有.ssh文件夹则需要自己创建

# 服务器端执行
    cd ~
    mkdir .ssh
    chmod 700 ~/.ssh
    cd ssh
    touch authorized_keys
    chmod 600 authorized_keys

# 本地主机上传公钥
scp id_rsa.pub userName@host:/home/userName/.ssh/temp_authorized_keys
# 连接服务器之后
cat ~/.ssh/temp_authorized_key >> ~/.ssh/authorized_keys

ZSH

  • 安装ZSH
sudo apt install zsh
sudo apt install git
chsh -s /usr/bin/zsh
sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
# 这里如果提示连接失败进入 oh-my-zsh代码库 (https://github.com/ohmyzsh/ohmyzsh/blob/master/tools/install.sh) 复制 install.sh到本地 
# 然后执行 bash ./install.sh

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
vim ~/.zshrc
# 在该文件中的插件处 添加 zsh-autosuggestions zsh-syntax-highlighting

img

  • 若是先前已经安装Miniconda之类的环境 导致安装zsh之后找不到conda指令
sudo vim ~/.zshrc

# #########文件添加如下:
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/z/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/z/miniconda3/etc/profile.d/conda.sh" ]; then
        . "/home/z/miniconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/z/miniconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<
  • 像bash那样对安装包进行提示
sudo apt install command-not-found

sudo vim ~/.zshrc

# ##########文件添加如下:
# >>>> get zsh_command_not_found info >>>>>>
. /etc/zsh_command_not_found
# <<<<<<<<<<<<<<<<<<<<<<<<<

# 配置生效
source ~/.zshrc
sudo apt update
sudo apt-get update
  • zsh显示全文件目录
cd ~/.oh-my-zsh/themes
sudo vim robbyrussell.zsh-theme

# 目录显示不完整的原因是 PROMPT字段中的%c对目录进行了省略,需要将%c更改为[$PWD]即可 
# 将第二行修改为 PROMPT+=' %{$fg[cyan]%}[$PWD]%{$reset_color%} $(git_prompt_info)'
source ~/.zshrc

Miniconda

  • 下载
cd ~/Downloads
#这里下载的是最新版本
wget -c https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O Miniconda-lasted.sh
#Miniconda官网:https://conda.io/miniconda.html
  • 安装
# 尽力那个不要使用sudo bash Miniconda-lasted.sh,使用sudo安装到整个系统环境中,不使用sudo安装到当前用户目录环境中
bash Miniconda-lasted.sh

# 一路回车 或者输入 yes即可
  • 添加清华源
# 设置搜索时显示通道地址,该命令会创建 .condarc文件
conda config --set show_channel_urls yes

sudo vim ~/.condarc

##########复制内容到.condarc中########
channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

# 若要删除源 只需要将.condarc中添加的清华镜像链接删除即可也就是只保留 
# channels:
#   - defaults

  • 运行conda clean -i 清除索引缓存,保证用的是镜像站提供的索引。

  • 为pip指定镜像源

pip config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple

# 升级pip
pip install pip -U
  • 更新当前conda, conda update conda

  • 创建虚拟环境

conda create -n your_env_name python=x.x
# 例如创建python3.10版本的虚拟环境
conda create -n env_py310 python=3.10
  • 虚拟环境切换
# 查看环境
conda env list

# 切换虚拟环境
conda activate Your_env_name

# 退出虚拟环境
conda deactivate
  • 虚拟环境删除
conda remove -n your_env_name --all
  • 删除虚拟环境中某个包
conda remove --name your_env_name package_name 

MySql安装

# 安装
sudo apt-get update
sudo apt install mysql-client-8.0 mysql-server-8.0

# 验证
mysql --version

# 新建root用户密码
sudo mysql_secure_installation
# =====================================
此时按照信息提示 完成密码设置并进行确认之后会报错
继续以下步骤
# =====================================

# 须通过linux的root用户进入root
su root
mysql
# 为数据库root用户设置密码为 'mynewpassword'
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';
# password default : rootroot

# 退出mysql设置,回退至linux下的owner权限
exit;
exit

# 重新配置安全插件选项 包括密码
sudo mysql_secure_installation
# =============================
后续设置步骤根据实际需要进行设置即可
# =============================

Mininet安装

  • 非服务器,或是服务器拥有网络下载安装权限
Mininet 2.3.0 on Debian 11/ubuntu22.04: sudo apt-get install mininet
Mininet 2.2.2 on Ubuntu 20.04 LTS: sudo apt-get install mininet
Mininet 2.2.2 on Ubuntu 18.04 LTS: sudo apt-get install mininet

# 测试
mn --version

# 可视化界面
cd /usr/share/doc/mininet/examples
# 保证miniconda或者python环境存在
python --version
# 安装包依赖
pip install mininet
# 启动可视化界面
python miniedit.py

# 配置别名 快速启动
sudo vim ~/.zshrc 
# 在尾行添加如下
alias start_miniedit="conda activate env_py36; python /usr/share/doc/mininet/examples/miniedit.py "
# 配置生效
source ~/.zshrc
  • 若无安装权限,则通过源码编译
# 官网安装指导
# http://mininet.org/download/#option-3-installation-from-packages

git clone https://github.com/mininet/mininet

cd mininet
git tag  # list available versions
# 这里需要保证良好的VPN环境,默认是从github拉取最新依赖 或者更换gitee仓库(自行搜索)
git checkout -b mininet-2.3.0 2.3.0  # or whatever version you wish to install
cd ..

mininet/util/install.sh [options]

To install everything (using your home directory): install.sh -a
To install everything (using another directory for build): install.sh -s mydir -a
To install Mininet + user switch + OvS (using your home dir): install.sh -nfv
To install Mininet + user switch + OvS (using another dir:) install.sh -s mydir -nfv

# test
sudo mn --switch ovsbr --test pingall

Wake on Lan

本文所记录内容的硬件配置:华硕主板Z790-P,系统版本为Ubuntu22.04,gnome桌面环境
其它硬件或软件配置请谨慎参考

  • [主板]BIOS如何设置启用网络唤醒(WOL: Wake On Lan)功能 | 官方支持 | ASUS 中国

  • 确保主板开启 wake on lan

    • 计算机开机后,立刻按压键盘上的“delete”或者“F2”键,进入BIOS [Advanced Mode]
    • img
    • 点选 [Advanced]页面并选项[APM Configuration]选项,如下图所示
    • img
    • 点选[Power On By PCI-E]选项并设置为[Enabled]
    • img
    • 按压键盘F10键,点选Ok,保存选项,会自动重启计算机。
    • bios设置完成
  • 注册系统服务

  •   sudo apt install ethtool
      
      sudo vim /etc/systemd/system/wol@.service
      
      ########### 文件内容如下 ##########
      [Unit]
      Description=Wake-on-LAN for %i
      Requires=network.target
      After=network.target
      
      [Service]
      ExecStart=/sbin/ethtool -s %i wol g
      Type=oneshot
      
      [Install]
      WantedBy=multi-user.target
      
      ############ 文件内容结束 ###########
    
    
  • 确定网卡名称:指令: ip a 。 注意网卡是有有效IP的那个,不是第一个。

img
  • 启动服务项
sudo systemctl enable wol@YOU_NIC_NAME

sudo systemctl start wol@YOUR_NIC_NAME
  • 验证配置有效:指令:sudo ethtool YOUR_NIC_NAME ,这里需要注意必须要用sudo权限,否则由于全新问题敏感信息无法显示。如下图看到 wake-on:g 则配置完成
    img

安装Nvidia显卡驱动

本节所写显卡型号为 RTX A5000
其它型号显卡请更改驱动下载链接

注意:安装驱动前需要关主板 secure boot

wget https://us.download.nvidia.com/XFree86/Linux-x86_64/525.116.03/NVIDIA-Linux-x86_64-525.116.03.run
  • 卸载原有的所有关于Nvidia驱动内容的东西
sudo apt-get remove --purge nvidia*   # 或者nvidia-*

# 为了保险 再来一遍

sudo apt-get remove --purge *nvidia*
  • 安装必要的依赖软件
sudo apt-get update   #更新软件列表
 
sudo apt-get install g++ gcc cmake make -y
  • 屏蔽nouveau驱动
# Ubuntu系统集成的显卡驱动程序是第三方为NVIDIA开发的开源驱动nouveau,安装NVIDIA官方驱动之前需要先将其屏蔽。网上教程基本都是采用将nouveau驱动添加到黑名单的操作

# 安装 vim
sudo apt install vim

sudo vim /etc/modprobe.d/blacklist-nouveau.conf

###### 添加内容如下 #########
blacklist nouveau
options nouveau modeset=0
##### 添加内容结束 #########

# 更新initramfs
sudo update-initramfs -u

# 重启
sudo reboot

# 验证是否屏蔽成功
lsmod | grep nouveau

# 如果没有任何输出结果表示禁用成功
  • 关闭显示服务器
sudo apt install lightdm -y

sudo /etc/init.d/lightdm stop

# 或者 sudo service lightdm stop

# 按理说 默认使用的gnome桌面使用的显示服务是gdm 直接将其关停也是可以的
# 但是我没有去尝试 因为网络上的教程没人这么做 
# 安装lightdm并没有特别的含义 只是为了指令统一 因为不同的桌面环境如gnome、kde、xfce使用的显示服务不同
# 如要查看当前使用的显示服务器 指令为: ` cat /etc/X11/default-display-manager`
# 关停gdm指令如下
# sudo systemctl stop gdm
  • 显示服务关停之后,会进入文本界面tty,如果没有自动切换可以手动切换,按ctrl+alt+F3即可
  • 安装驱动
# 确保驱动文件在当前活动目录下
ll -a|grep NVIDIA-Linux-x86_64

sudo sh ./NVIDIA-Linux-x86_64-525.116.03.run

# 网上有人说 需要添加安装参数 sudo ./NVIDIA-Linux-x86_64-430.26.run –no-opengl-files
# 否则会出现循环登录的情况,但是我安装时并没有遇到这个问题
  • 启动显示服务
sudo service lightdm start

# 如果使用默认 gdm则指令如下
sudo systemctl start gdm
# 这时系统可能会告诉你
# “gdm.service is not active, cannot reload. invoke-rc.d: initscript gdm3, action "reload" failed.”
# 不要慌 重启即可

sudo reboot
  • 验证驱动是否正常工作
nvidia-smi

# 如下图所示 能正常输出看到机器上的显卡 则安装完成
img

开启网络唤醒 Wake On Lan

  • [主板]BIOS如何设置启用网络唤醒(WOL: Wake On Lan)功能 | 官方支持 | ASUS 中国

  • 确保主板开启 wake on lan

    • 计算机开机后,立刻按压键盘上的“delete”或者“F2”键,进入BIOS [Advanced Mode]
    • img
    • 点选 [Advanced]页面并选项[APM Configuration]选项,如下图所示
    • img
    • 点选[Power On By PCI-E]选项并设置为[Enabled]
    • img
    • 按压键盘F10键,点选Ok,保存选项,会自动重启计算机。
    • bios设置完成
  • 注册系统服务

  •   sudo apt install ethtool
      
      sudo vim /etc/systemd/system/wol@.service
      
      ########### 文件内容如下 ##########
      [Unit]
      Description=Wake-on-LAN for %i
      Requires=network.target
      After=network.target
      
      [Service]
      ExecStart=/sbin/ethtool -s %i wol g
      Type=oneshot
      
      [Install]
      WantedBy=multi-user.target
      
      ############ 文件内容结束 ###########
    
    
  • 确定网卡名称:指令: ip a 。 注意网卡是有有效IP的那个,不是第一个。

img
  • 启动服务项
sudo systemctl enable wol@YOU_NIC_NAME

sudo systemctl start wol@YOUR_NIC_NAME
  • 验证配置有效:指令:sudo ethtool YOUR_NIC_NAME ,这里需要注意必须要用sudo权限,否则由于全新问题敏感信息无法显示。如下图看到 wake-on:g 则配置完成

    img

将ubuntu-desktop转为ubuntu-server

sudo apt install ubuntu-server
reboot
sudo systemctl set-default multi-user.target
reboot
sudo apt purge ubuntu-desktop -y && sudo apt autoremove -y && sudo apt autoclean
reboot

# 参考来源 https://askubuntu.com/questions/1313733/convert-ubuntu-desktop-to-server-edition-20-04