0%

ubuntu使用手册

1. Ubuntu常用快捷键

1
2
3
4
5
6
7
8
9
1、打开终端:Ctr+Alt+T
2、关闭终端:Ctrl + Shift + Q
3、复制:Ctrl + Shift + C
4、粘贴:Ctrl + Shift + V
5、跳转回主机操作:ctr+alt
6、跳回虚拟机:Ctr+G
7、新建终端窗口:Ctrl + Shift + N
8、运行命令:Alt + F2
9、全屏切换:F11

2. apt安装

对于Ubuntu安装各种软件包的命令格式使用apt-get或者apt。(centOS使用yum),这是在线安装。

1
2
3
4
5
//在线安装
sudo apt-get update //更新软件包列表
sudo apt-get install //安装软件
sudo apt-get remove //删除软件
sudo apt-get clean //清理安装包
附:如果是从Ubuntu官网已经下载好了安装包,相应离线安装的话,因为从Ubuntu的文件为deb格式,所以

  • 软件安装sudo dpkg -i xxx.deb
  • 软件卸载sudo dpkg -r 软件名

推荐安装的包: gcc、g++、vim、aptitude

2.1 安装net-tools网络工具

net-tools工具箱包括arp, hostname, ifconfig, netstat, rarp, route, plipconfig, slattach, mii-tool and iptunnel and ipmaddr等命令。

1
sudo apt-get install net-tools

2.2 安装ssh

ssh用于远程登录到Linux服务器来管理维护系统。SSH是专为远程登录会话和其他网络服务提供安全性的协议;使用ssh服务(指实现SSH协议的软件)可远程登录到服务器来管理维护系统,防止远程管理过程中的信息泄露问题。

1
2
3
4
5
6
//安装
sudo apt-get install openssh-server
//查看状态
service ssh status
//查看端口
netstat -anp |grep 22 netstat -anp |grep sshlsof -i :22

2.3 aptitude

aptitude 命令与 apt-get 命令一样,都是Debian Linux 及其衍生系统中功能极其强大的包管理工具。与apt-get不同的是,aptitude在处理依赖问题上更佳一些。举例来说,aptitude 在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。它通过文本操作菜单和命令两种方式管理软件包。

1
2
3
4
5
6
7
8
9
10
11
//安装
sudo apt-get install aptitude
//命令
aptitude upgrade //升级系统所有的软件包
aptitude dist-upgrade //将系统升级到新的发行版
aptitude safe-upgrade //安全升级系统的软件包
aptitude install net-tools //安装软件包
ptitude purge net-tools //彻底删除软件包
aptitude search ssh //根据关键词搜索软件包
aptitude show ssh //查看软件包的详细信息
aptitude clean //删除缓存目录中的软件包安装文件

2.3 安装gcc/g++

GCC原名为 GNU C 语言编译器,因为它原本只能处理 C语言。GCC 快速演进,变得可处理 C++、Fortran、Pascal、Objective-C、Java 以及 Ada 等他语言。实际使用中:

  • 使用 gcc 指令编译 C 代码
  • 使用 g++指令编译 C++ 代码
1
2
sudo  apt-get insatll gcc
sudo apt-get install g++
2.4 安装vim

vim是从VI发展而来的一个文本编辑器,功能更强大。而vim.tiny是vim的精简版,所以,安装vim势在必行。

1
sudo apt-get install vim

2.5 安装Cmake

Camke是一个高级编译工具,当你用不同的语言或者编译器开发一个项目,各就各位code完之后要生成最终的输出(dll或执行文件),这时候就尴尬了,你要手动去MingGW或者GCC下配置成千上万的.cpp .h .o .c路劲和地址吗?这时候神器就出现了CMake,主要功能:

  • 配置和生成各大平台的工程(vs的vcxproj,Qt的Pro)
  • 生成makefile文件
1
sudo apt-get install cmake
2.6 第三方线程库

pthread是第三方线程库,安装如下:

1
2
sudo apt-get install glibc-doc
sudo apt-get install manpages-posix manpages-posix-dev

2.7 MySQL安装
1
sudo apt install mysql-server;

3. 虚拟机网络问题

有时候我们的虚拟机会出现无法连接上网的情况,解决方法如下:

  • 检查宿主主机,能正常联网
  • linux的ifconfig显示,没有固定IP

    1
    2
    3
    4
    5
    6
    7
    8
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    inet 127.0.0.1 netmask 255.0.0.0
    inet6 ::1 prefixlen 128 scopeid 0x10<host>
    loop txqueuelen 1000 (Local Loopback)
    RX packets 2588 bytes 197004 (197.0 KB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 2588 bytes 197004 (197.0 KB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

  • 将网络管理的缓存清除后重新开启即可

    1
    2
    3
    4
    5
    6
    7
    8
    9
    sudo service network-manager stop
    sudo rm /var/lib/NetworkManager/NetworkManager.state
    sudo service network-manager start

    sudo service NetworkManager stop
    sudo rm /var/lib/NetworkManager/NetworkManager.state
    sudo service NetworkManager start
    sudo vim /etc/NetworkManager/NetworkManager.conf #在这个文件中把第四行的false改成true
    sudo service NetworkManager restart

4.WSL的ubuntu安装

Windows可集成双系统,这里我们推荐使用一下方式来安装Linux系统:

  • 在官网下载压缩包后,更改后缀名为zip,之后解压即可
  • 解压后,执行ubuntuxxxx.exe,弹出终端后,设置你的用户名和密码即安装完成
  • 安装后rootfs即为你ubuntu的工作区间

之所以推荐上述安装方式,是因为使用驱动安装是之间安装载C盘的,虽然可以转移但过程繁琐,之间使用压缩包方式更为简洁。

5. wsl下的ubuntu的ssh服务器

如果你想用ssh连接远程window上的wsl,你是无法直接连接Linux的ssh的,必须通过走windows端口映射才行:

1
2
3
sudo apt-get remove openssh-server #自带的有问题卸载
sudo apt-get install openssh-server #重新安装
sudo vim /etc/ssh/sshd_config #修改配置文件
1
2
3
4
5
6
7
# 配置 去掉前面的“#”
Port 2222 # 端口号 默认22,因为与Window系统自带SSH冲突故改为2222
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::
PasswordAuthentication yes # 是否允许使用密码登录 选“是”
# 其它配置没必要改变
生成成功后,我们在重启sshd,这样就可以了。
1
sudo service ssh --full-restart #重启SSH服务
端口映射:然后WLS2有一个问题,就是它相当于一个完整的虚拟机,所以IP地址与本机不一样,这就导致我们无法在别的设备上SSH连接

解决办法就是把WSL2虚拟机的IP映射到本机上(假设本机windows的ip为192.168.1.3)

1
2
3
4
5
6
netsh interface portproxy set v4tov4 listenport=12233 listenaddress=0.0.0.0 connectport=2222 connectaddress=172.18.69.154
# listenport win10监听的端口号
# listenaddress win10监听的外网地址,0.0.0.0指所有地址
# connectport 映射的linux的端口 也就是ssh的开启端口
# connectaddress linux的ip
# 可以理解为,所有发往win11:192.168.1.3的12233端口的tcp信息都会转发到172.18.69.154:2222

测试:你可以在window上运行下面代码验证是否映射成功

1
ssh 用户名@本机IP -p 映射端口 # 例如 ssh root@192.168.1.3 -p 12233 

6. 使用内透软件natapp

内网内透通过将我们的本机的ubuntu服务器与natapp的服务器连接,以支持另一台主机通过不同网段也能够通过走natapp的服务器连接该ubuntu服务器。即内网穿透。

在natapp中指定服务器地址即可,详细操作见natapp官网 注:上面的ip地址和端口号中,如果你是连接wsl的那么就是window的ip地址和相应的端口映射号

7. WSL出现cannot execute binary file: Exec format error

出现上述无法执行二进制文件的错误,这是因为该程序的编译链中的GCC是32位版本,而wsl本身是不支持的,WSL64位(微软吊毛没有做向下兼容)。

解决方法:可以使用QEMU来虚拟化内核来解决这个问题

  • 安装QEMU

    1
    2
    3
    sudo apt update
    sudo apt install qemu-user-static
    sudo update-binfmts --install i386 /usr/bin/qemu-i386-static --magic '\x7fELF\x01\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x01\x00\x00\x00' --mask '\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xf8\xff\xff\xff\xff\xff\xff\xff'
    这些命令将通过执行qemu-i386-static来激活i386支持,并将配置文件放入/var/lib/binfmts/中,以供将来重新激活。

  • 每次重新启动WSL并需要i386支持时,都需要重新激活此功能

    1
    sudo service binfmt-support start

问题解决

8 WSL下出现mstsc.exe在后台运行

最近发现窗口总是无缘无故失去焦点,导致好好敲着代码,突然无法输入了

找了一个窗口检点检测工具,根据pid定位到是 mstsc.exe这个进程在搞鬼,每次失去焦点时都是被切换到这个进程上了,而且这个进程在频繁重启

原因是我安装了WSL2,WSL2其中运行着 WSLg XServerWayland 服务器和 Pulse Audio 服务器。每个服务器的通信套接字都被投射到用户发行版中,以便客户端应用程序可以连接到它们。来源microsoft/wslg

解决办法

  • .wslconfig:用户还可以通过在其文件(位于)中添加以下条目来选择完全关闭系统发行版c:\users\MyUser\.wslconfig。这将关闭 WSL 中对 GUI 应用程序的支持。(如果你没有这个文件,那么在这个目录下创建它,然后填下述内容即可)
    1
    2
    [wsl2]
    guiApplications=false