linux常用命令工具及问题解决方法
42.snap安装的软件无法使用
提示已经安装,但是又无法卸载。这是因为snap disable了该软件。需要先使能,如:sudo snap enable eclipse
41.Linux发行版WPS:[warn]Some formula symbols might not be displayed correctly due to missing fonts symbol.
https://github.com/iykrichie/wps-office-19-missing-fonts-on-Linux
把解压的文件夹移动到/usr/share/fonts并且刷新缓存
sudo mv wps-office-19-missing-fonts-on-Linux-main /usr/share/fonts && sudo fc-cache -f -v
扩展安装中文字体
https://gitcode.com/open-source-toolkit/bd75c/blob/main/zhFonts.zip
将解压后的字体文件夹完整拷贝到Linux系统的 /usr/share/fonts 目录下
sudo cp -r ~/Downloads/zhFonts /usr/share/fonts
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv
40. touch文件状态
touch -t 202506201200 file.txt
touch -d "2 days ago" file.txt
39. snap安装vscode无法输入汉字问题
snap安装的vscode有问题,可以官网下载vscode.
38. 解决 Ubuntu 中 gedit编辑器打开文件出现中文乱码问题
// 中文乱码(‘GB18030‘,‘GB2312‘,‘GBK‘中文简体字符集,‘BIG5‘,’BIG5-HKSCS' 中文繁体字符集)
#gsettings set org.gnome.gedit.preferences.encodings candidate-encodings "['GB18030', 'UTF-8', 'CURRENT', 'ISO-8859-15', 'UTF-16']"
解决 Ubuntu 下 gedit编辑器打开文件出现中文乱码问题
37. Ubuntu设置终端相对短路径
这个设置相对实际上是比较简单的。在自己的家目录打开.bashrc
# 编辑文件
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' # 将\w 改成 \W 大写字母W
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' # \W
fi
# 保存退出
只需要将w修改为大写W保存,记得source .bashrc 或者重启终端
然后就可以看到只显示最后一级目录了
https://www.cnblogs.com/wlsphper/p/6782542.html
https://www.cnblogs.com/yqmcu/p/11201720.html
36. ubuntu24使用fcitx框架输入法,wechat无法输入汉字问题
cd /usr/share/applications/
sudo gedit wechat.desktop
[Desktop Entry]
Name=wechat
GenericName=WeChat
Exec=env XMODIFIERS=@im=fcitx GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx /usr/bin/wechat %U
StartupNotify=true
Terminal=false
Icon=/opt/wechat-beta/icons/wechat.png
Type=Application
Categories=Utility;
Comment=微信桌面版
https://zhuanlan.zhihu.com/p/701020410
35.ubuntu24.04安装搜狗输入法闪屏问题
vim ~/.bashrc
export QT_QPA_PLATFORM=xcb
nohup pkill fcitx > /dev/null 2>&1 &
nohup fcitx > /dev/null 2>&1 &
34. linux终端后台程序不断输出日志信息,刷屏,如何屏蔽,终止?
#pgrep [程序名]
#kill -STOP [进程号]
33.pgrep命令的使用方法
pgrep 是一个在 Linux 系统中常用的命令行工具,它用于根据进程的名称或其他属性来查找和列出匹配的进程ID(PID)。
32. 查看网卡驱动信息
方法一.
# ethtool -i enp3s0

可知该网卡使用的igb驱动
31. grep忽略二进制文件
#grep -I "test" .
30. 查询postgresql支持的编码
SELECT DISTINCT pg_catalog.pg_encoding_to_char(conforencoding) from pg_catalog.pg_conversion;
29. eclipse过滤不显示指定后缀的文件
右建项目 -》 Properties.
增加过滤规则

28.查看Linux中的CPU信息
使用 lscpu 命令获取 CPU 信息
查看/proc/cpuinfo的内容
lshw 列出硬件信息:lshw -class CPU
hwinfo --cpu
dmidecode --type processor
显示cpu频率(不同环境有差异)
lscpu -e
27.tar压缩软连接文件
文件夹里含有软连接,带参数 h(实际压缩文件就是原文件了)
26. git删除本地某个分支
1).切换到要删除分支所在的目录。
2).执行命令 git branch -d <branch-name>,其中<branch-name>是要删除的分支名称。该命令会删除本地分支。
3).如果分支还未合并到其他分支,上述命令会提示无法删除。此时可以使用命令 git branch -D <branch-name>,强制删除未合并的分支。
25. Centos多窗口问题
默认使用GNOME桌面环境,可以通过GNOME Tweaks工具或命令行来启用多窗口功能。
#yum install gnome-tweaks
1)打开GNOME Tweaks。
2)在GNOME Tweaks中,转到Workspaces选项卡。
3)在Workspaces部分,找到Number of workspaces选项,可以将其设置为你想要的行和列的数量,以支持多窗口。
4)确保Workspaces span选项设置为Monitor,这样工作区将跨越显示器。
24. git代码合并
1)要将某次提交合并到另一个分支,你可以使用以下步骤:
-
确定要合并的提交的哈希值。
-
切换到目标分支。
-
使用
git cherry-pick命令应用该提交。
示例代码:
# 假设提交的哈希值是abc1234
git checkout target-branch # 切换到目标分支
git cherry-pick abc1234 # 将该提交应用到目标分支
2)如果你想要合并两个提交之间的所有更改(包括但不限于特定提交),你可以使用以下步骤:
-
确定开始和结束提交的哈希值。
-
切换到目标分支。
-
使用
git merge命令合并这个范围的更改。
示例代码:
# 假设开始提交的哈希值是abc1234,结束提交的哈希值是def5678
git checkout target-branch # 切换到目标分支
git merge abc1234^..def5678 # 将这个范围的更改合并到目标分支
23. eclipse 中Type 'xxxx' could not be resolved
首先确保 头文件是否添加,然后在project -》c/c++ index -> rebuild
22. 实时监测程序性能
#perf top -p $(pidof chrome)
21.git-忽略指定文件
GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore
举例:
# 排除所有.开头的隐藏文件:
.*
# 排除所有.class文件:
*.o
# 不排除.gitignore和java.class:
!.gitignore
!java.class
全局:通过修改全局配置 git config 中的 excludesfile 指定全局忽略文件。设置方法:
$git config --global core.excludesfile ~/.gitignore
局部:忽略文件默认为当前目录的 .gitignore,但它只作用于当前目录下。
语法
.gitignore 的语法规范如下:
·所有空行或者以注释符号 # 开头的行都会被 Git 忽略;
·可以使用标准的 glob 模式匹配。 * 匹配模式最后跟反斜杠(/)说明要忽略的是目录。 * 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
glob 模式匹配:
·星号(*)匹配零个或多个任意字符;
·[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);
·问号(?)只匹配一个任意字符;
·[0-9a-zA-Z] 在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9a-zA-Z] 表示匹配所有 0 到 9 的数字和所有字母);
·\ 转义字符。
注:理论上来说,在要忽略的格式文件后面添加注释是允许的,但经过我的验证,结果发现这样子操作并不能达到预期的效果。
1.locate定位系统文件或者目录位置
安装及更新本地索引信息:
#yum install mlocate
#updatedb
用法示例:定位libssl.so位置
#locate libssl.so
2.查看Zip文件的详细信息
包括文件名、大小、时间戳等,并且可以列出Zip文件中所包含的所有文件
zipinfo file.zip
也可以使用less或者vim命令.但如果需要查看Zip文件中的有多个文件,可以使用less或者vim命令的”:n”选项,其中n为文件编号。
less file.zip:n
vim file.zip:n
3. 查看进程内存分布情况
pmap -x pid
使用示例:
#!/bin/bash
#监测mysql等服务内存分配情况,并日志存储.
logfd="./maps_proc.log"
cur_tmp="./tmp"
mkdir -p ${cur_tmp}
while true
do
proc_pid=(`ps aux | egrep "mysql|chrome" | grep -v grep | awk -F' ' '{print $2}'`)
dateformat=`date +"%Y-%m-%d %H:%M:%S.%3N"`
if [ "${proc_pid[*]}"X != "X" ];then
echo "${dateformat}" >> ${logfd}
for pid in "${proc_pid[@]}"; do
pmap -x ${pid} >> ${logfd}
done
fi
sleep 1
ldformat=`date +"%Y-%m-%d_%H_%M_%S"`
log_size=`ls -lart ${logfd} | awk -F' ' '{print $5}'`
log_msize=`echo "scale=0;${log_size}/1024/1024" | bc`
if [ ${log_msize} -gt 10 ];then
tar -cJf "${cur_tmp}/${logfd}_${ldformat}.tar.xz" ${logfd} --remove-files
fi
done
4. 系统日志
yum install rsyslog
tail -f /var/log/messages
5.ubuntu文件夹左侧边栏消失解决方法
F9
6. 追踪内存堆栈使用情况
valgrind --tool=massif --time-unit=B --detailed-freq=1 --trace-children=yes ./test
test为可执行程序,会追踪子进程,但是,貌似主进程退出后,追踪也随即结束.
如果massif变成僵尸进程(zoombie),则测试程序可能会因为自身检查限制最多只启动一个进程而无法启动.ps -ef | grep massif.获取相应进程号,kill即可.
但对于实际测试而言,该工具似乎并不好用.只探测到了初始化阶段堆栈使用情况,跑业务期间就没有任何输出了.
7. 删除指定内核步骤
卸载指定版本内核(一般建议保留1~2个内核)
查看内核信息
dpkg --get-selections | grep linux
删除指定内核
sudo apt-get purge linux-image-4.15.0-101-generic linux-headers-4.15.0-101 linux-modules-4.15.0-101-generic
更新系统引导
update-grub
8.安装指定版本内核
Install kernel-generic:通用内核,一般 PC 及 Server
sudo apt install linux-headers-5.4.0-42-generic linux-image-5.4.0-42-generic
Install low-latency kernel:低延迟内核,适用于工业嵌入式系统(Industrial embedded systems)
sudo apt install linux-headers-5.4.0-42-lowlatency linux-image-5.4.0-42-lowlatency
修改内核启动顺序(不修改默认使用最新的)
GRUB_DEFAULT=0
改为GRUB_DEFAULT的值为"1>2"
或者GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.4.0-42-generic"
更新系统引导
update-grub
同理,切换内核有类似操作.
9. 升级内核后,有线网卡和无线网卡均无法启动
提示找不到eth0,wlan0等网卡设备,即/proc/net/dev无eth0,wlan0,安装linux-modules-extra包即可
10. 安装ubuntu默认桌面
sudo apt-get install ubuntu-desktop
11. Linux系统thunderbird邮箱设置默认存储地址
在界面上设置的收发邮件存储地址在重启后无效,需要在登陆用户邮件配置文件(.thunderbird/installs.ini)中设置,如:
Default=/home/universal/email-thundbird
12. Ubuntu桌面卡死
执行命令注销桌面重新登陆:
sudo pkill Xorg 或者 sudo restart lightdm
执行上述命令后等待两分钟,自然会看到你想要的界面
13. cp复制软链接指向的文件及复制软件链接本身而不是软链接指向的文件
如果使用cp -L命令,cp会复制软链接指向的文件,而不是软链接本身。
如果使用cp -P命令,cp会复制软链接本身,而不是软链接指向的文件
14. 获取正确的服务名
systemctl list-units | grep maria
15.A problem occurred when checking for the updates.
为了编译一个程序,把/usr/bin/python3链接到了python3.8,而Ubuntu很多组件需要用到python3.6,将链接修改回原来值,指向python3.6.,重启系统,问题解决。
16. 本地yum源安装部分软件报错
错误主要信息:gpg check failed
现象:一部分软件安装没问题,一部分软件安装提示gpg校验错误。
分析:yum源配置文件(/etc/yum.repos.d/CentOS-Media.repo)内容含有如下:
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
表明校验文件内容和库不匹配。
解决办法1:将“gpgcheck=1”改为"gpgcheck=0“,取消gpg校验。
解决办法2:将gpgkey值改为yum源校验一致的文件。
17. vmware安装的CentOS7虚拟机无法访问外部网络
现象:外部网络可以访问该虚拟机,但是该虚拟机无法访问外部网络。
原因:
1).虚拟机-> 编辑 -> 虚拟网络编辑器,查看nta配置,确保虚拟机的的网关和nta配置上的网关一致。
2).如果nta配置的网关地址与网络上其他主机冲突,也会造成类似问题。可以肯定的是vmware虚拟机自动生成nta配置时,没有校验这个。
验证是否为该原因的方法:arping -I eth0 [gateway ip]。如果出现了两个不同的mac信息,那么必定属于网关地址冲突造成的,修改nta配置网关即可。
18.打开虚拟机提示“”Could not open /dev/vmmon”
如果模块缺失,可以尝试:# /etc/init.d/vmware start
其他问题参考解决Ubuntu宿主机下面安装Vmware时候vmmon和vmnet模块缺失导致的报错
19. wifi有的热点连接不上
重启电脑wifi。操作:Fn+F2
20. git diff提示filemode发生改变
git status显示某些文件发生了改变,使用git diff或者git GUI显示只是fileMode发生了变化。
但是源代码通常只关心文本内容,因此chmod产生的变化应该忽略,所以设置一下:
git config --add core.fileMode false

浙公网安备 33010602011771号