1. Ubuntu常用快捷键
1 | 1、打开终端:Ctr+Alt+T |
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 //清理安装包
- 软件安装
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 | sudo apt-get insatll gcc |
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
2sudo 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
8lo: 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
9sudo 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
3sudo 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 # 是否允许使用密码登录 选“是”
# 其它配置没必要改变1
sudo service ssh --full-restart #重启SSH服务
解决办法就是把WSL2虚拟机的IP映射到本机上(假设本机windows的ip为192.168.1.3) 1
2
3
4
5
6netsh 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
3sudo 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 XServer
、Wayland
服务器和 Pulse Audio
服务器。每个服务器的通信套接字都被投射到用户发行版中,以便客户端应用程序可以连接到它们。来源microsoft/wslg
解决办法
.wslconfig
:用户还可以通过在其文件(位于)中添加以下条目来选择完全关闭系统发行版c:\users\MyUser\.wslconfig
。这将关闭 WSL 中对 GUI 应用程序的支持。(如果你没有这个文件,那么在这个目录下创建它,然后填下述内容即可)1
2[wsl2]
guiApplications=false