Linux Tools

  1. 1. Linux开发奇怪问题大集合

Linux开发奇怪问题大集合

收录平时撸Linux以及开发中遇见的各种奇怪的问题


运行bash脚本显示/usr/bin/env: “sh\r”: 没有那个文件或目录

原因:这个脚本可能是在windows下写的,众所周知,windows里换行符就是\r

解决方法:Vim,yyds。使用Vim打开脚本,重新设置文件格式。

1
2
3
: set ff
: set ff=unix
: wq!

Gradle编译过程中报错Cause: zip END header not found

原因:下载的gradle当前版本zip包损坏。

解决方法:项目当前目录下有一个gradlew,在ternimal中输入命令./gradlew --version,根据输出判断是哪个版本包错误,以及对应文件在那。删掉重新编译即可。


Gradle代理。总所周知,因为一些公开的秘密,gradle一般情况下很慢。即使在IDEA中设置Http proxy也不行。

原因:Gradle需要单独配置代理

解决方法:在GRADLE_USER_HOME目录——一般为用户目录下的.gradle目录,添加文件gradle.properties.然后在其中添加配置。如本人采用HTTP代理,故添加如下配置:

1
2
3
4
systemProp.http.proxyHost=*****
systemProp.http.proxyPort=******
systemProp.https.proxyHost=******
systemProp.https.proxyPort=******

然后再次编译,代理成功。


Maven代理:

同gradle,在MAVEN_USER_HOME目录+一般为用户目录下的.m2目录,添加文件settings.xml,然后在其中添加配置。本人采用HTTP代理,故配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<proxies>
<proxy>
<id>my-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>*******</host>
<port>******</port>

<!-- 没有不填 -->
<username>*****</username>
<password>*****</password>
<nonProxyHosts></nonProxyHosts>
</proxy>
</proxies>

Docker中运行mysql,连接时使用localhost/127.0.0.1均不成功。

原因:docker中的mysql运行IP并不在127.0.0.1

解决方法:查看docker容器内部元数据。docker inspect <containerId>其中IPAddress行即为容器运行IP。连接时使用该IP即可。


检测磁盘IO速度:

首先通过lsblk [divice name] 检测所需要测试的是哪一个磁盘区

而后通过hdparam -Tt [device name]检测即可


检测系统及硬件相关信息:

arch下,直接使用neofetch命令即可


修改grub引导文件\etc\default\grub后不会立即生效

需要更新boot:grub-mkconfig -o /boot/grub/grub.cfg后方可生效


安装Nvidia驱动

安装nvidia包,而后nvidia-xconfig生成Xorg配置文件/etc/X11/xorg.conf. 基本按Arch Wiki里安装无问题。重启即可使用。

注意:本方法未经过复现,是否真实可用尚未可知


安装完Nvidia驱动进入KDE发现系统图标变得巨大(图中看不太出来)

too big

解决方法:修改dpi(settings > fonts > font dpi)后恢复

根据搜索资料,为96倍数有利于显示.本机为1920×1080, dpi为96.DPI的修改登出后再登录方可生效。

此解决方法来自Rapiz的指导


安装maven跑spring项目时报错:invalid target release: 14

error

target release即maven使用java compile时使用的版本。查看本地java版本,发现是14

问题:maven使用java版本问题

false version

maven使用Java realse时采用全局变量JAVA_HOME。而使用yum install maven下载的Maven自带java 1.8,并替换了原有的Java version. 重新设置JAVA_HOME即可。示例机为centOS, 本地安装的java可在/usr/lib/jvm/目录下查看。更改完成并刷新设置后,再次查看版本,正确。

correct version

之后,正常编译成功,项目启动。


arch-linux: VMWare-Player installed from AUR

问题: 无法联网,报错显示Could not connect 'Ethernet0' to virtual network 'dev/vmnet0'.

查询当前虚拟机的日志(存储于虚拟机目录中的vmware.log中),显示

log

可以看出是因为没有vmnet设备。进入/dev/目录查看,果然无/dev/vmnet*设备

原因在于vmnet*设备在安装后并未初始化。

解决:启动vmware-networks.service,初始化vmnet*

systemctl start vmware-networks.service

再次查看/dev/目录,发现vmnet设备。此时即可联网。

inspired by arch-bbs: [SOLVED] VMware guest host - No connection


由于某些奇奇怪怪的原因,我的wifi MAC被校园网ban了,导致无法认证。只能修改mac地址。

可以通过如下命令得到新的MAC

1
macchange -r device-name

如果要修改的device正在活动,则修改失败。可以通过如下命令关闭对应网卡。

1
ifconfig device-name down

永久修改方法如下:

/etc/systemd/netwrok/目录下修改00-default.link

1
2
3
4
5
6
[Match]
MACAddress=原始 MAC

[Link]
MACAddress=更改后的 MAC
NamePolicy=kernel database onboard slot path

参考MAC address spoofing – arch wiki


Q: pve虚拟机折腾出了大问题,强行停止显示如下错误:

image-20210419144226788

A: 首先通过ha-manager set vm:101 --state disabled禁用,而后进行修复。

具体修复手段就见仁见智。


Q: centos nginx开放了端口也有权限,但是error.log显示permission delay。

A: centos的selinux模块的问题。把selinux关掉即可。setenforce 0