Skip to content

Linux

Linux的一些笔记

见侧目录

常用Linux控制组合键

组合键作用
Ctrl+C非常规中断,终止前端进程
Ctrl+D输入完成的正常信号,结束终端
Ctrl+H后退一格,删除前一个字符
Ctrl+J换行,与Enter功能相同
Ctrl+L换页,刷新屏幕
Ctrl+U删除当前行
Ctrl+A回到行首
Ctrl+R搜索命令历史记录

终端复用--Screen

安装

bash
# CentOS
yum install screen
# Debian/Ubuntu
apt install screen

基础命令

bash
# 查询screen提示
screen -help
# 已经存在的screen终端
screen -ls
# 使用-R创建Hello,按Ctril+a,再按d,可保持这个screen到后台并回到主终端
screen -R Hello
# 使用screen -r命令,回到虚拟终端
screen -r [pid/name]
# 进入对应终端,退出终端
exit
# 也可以在主终端内,用命令释放:
# 使用-R/-r/-S均可
screen -R [pid/Name] -X quit

终端复用--Tmux

安装

bash
# Debian/Ubuntu
apt install tmux
# CentOS/Fedora
yum install tmux

基本使用

bash
# 启动命名tmux
$ tmux new -s <name>
# 分离会话,可使用快捷键 Ctrl+b d
$ tmux detach
# 查看当前所有的 Tmux 会话
$ tmux ls
# 重接会话 使用编号
$ tmux attach -t 0/<name>
# 杀死会话
$ tmux kill-session -t 0/<name>
# 切换会话
$ tmux switch -t 0/<name>
# 重命名会话
$ tmux rename-session -t 0 <new-name>

# 列出所有快捷键,及其对应的 Tmux 命令
$ tmux list-keys
# 列出所有 Tmux 命令及其参数
$ tmux list-commands
# 列出当前所有 Tmux 会话的信息
$ tmux info

快捷键

默认的快捷键前缀键是Ctrl+b

?      显示快捷键帮助
空格键    采用下一个内置布局,这个很有意思,在多屏时,用这个就会将多有屏幕竖着展示
!      把当前窗口变为新窗口
"      模向分隔窗口
%      纵向分隔窗口
q      显示分隔窗口的编号
o      跳到下一个分隔窗口。多屏之间的切换
上下键   上一个及下一个分隔窗口
C-方向键  调整分隔窗口大小
&      确认后退出当前tmux
[      复制模式,即将当前屏幕移到上一个的位置上,其他所有窗口都向前移动一个。
c      创建新窗口
n      选择下一个窗口
l      最后使用的窗口
p      选择前一个窗口
w      以菜单方式显示及选择窗口
s      以菜单方式显示和选择会话。这个常用到,可以选择进入哪个tmux
t      显示时钟。然后按enter键后就会恢复到shell终端状态
d      脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话

配置zsh并使用Oh-my-zsh

安装

bash
# 查看自带终端
cat /etc/shells

# 安装zsh
# CentOS
yum install zsh
# Debian/Ubuntu
apt install zsh

# 设置为默认shell并重启终端:
chsh -s /bin/zsh

zsh常用命令

bash
Ctrl+R:搜索历史命令
Alt+D:删除光标后的一个单词
Ctrl+Z:挂起当前进程,可以使用fg命令恢复进程
r:可自动执行上一条命令
d:查看最近使用过的目录,输入数字可以直接进入对应目录

# 显示历史命令执行时间
 history -i
    1  2023-05-15 14:10  history -i
# 删除历史命令
 history -c
History file deleted.

安装配置Oh-my-zsh

MethodCommand
curlsh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
wgetsh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
fetchsh -c "$(fetch -o - https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

配置zsh-autosuggestions命令自动补全插件

bash
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

配置zsh-syntax-highlighting高亮显示常用命令插件

bash
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

配置并使用powerlevel10k 主题

  1. Clone the repository:
bash
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
  1. Set ZSH_THEME="powerlevel10k/powerlevel10k" in ~/.zshrc.

  2. 配置向导:键入p10k configure直接访问内置配置向导。

安装NVM管理多版本Node.js

安装和更新脚本 项目地址

bash
# 把命令中的版本改为最新版本 https://github.com/nvm-sh/nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
# 或者
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

重载环境变量

bash
# For macOS/Linux With ZSH
source ~/.zshrc
# For Linux With Bash
source ~/.bashrc

测试

bash
nvm -v

基本使用

bashi
# 查看已经安装的脚本
nvm list

# 查看可安装的lts版本
nvm ls-remote --lts

# 安装需要的版本
nvm install 16.14.1

# 激活需要使用的版本
nvm use 16

即可

卸载

bash
# 删除NVM以及Node.js
rm -rf ~/.nvm
# 删除可能存在的NPM
rm -rf ~/.npn
# 在环境变量内移除:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

使用Jenv配置多版本JDK

项目地址

下载jenv

bash
$ git clone https://github.com/jenv/jenv.git ~/.jenv

配置到环境变量

到环境变量内配置jenv即可:

bash
# Bash Shell用户
$ vim ~/.bashrc
# ZSH Shell用户
$ vim ~/.zshrc

并添加:

bash
# Jenv
export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"

重载环境变量

最后,我们重载环境变量

bash
# Bash Shell用户
$ source ~/.bashrc
# ZSH Shell用户
$ source ~/.zshrc

即可使用

bash
$ jenv help

添加JDK

bash
$ jenv add /usr/local/Zulu11

切换JDK 切换的方法很简单,首先看看当前安装的JDK版本:

bash
$ jenv versions

这个时候,我们用的还是默认JDK(system (set by /root/.jenv/version)),我们要切换到JDK11只需要:

bash
$ jenv local 11

这时,这个目录下使用的JDK就是JDK11: 需要全局JDK,可以用:

bash
$ jenv global 11

遇到$JAVA_HOME 未设置的报错,使用jenv enable-plugin export可以解决。

添加 JVM 选项(全局,按目录或当前 shell 实例)

bash
$ jenv global-options "-Xmx512m"

查看激活了那个插件。

bash
$ jenv plugins

假设要 Maven 使用通过 Jenv 激活的 JDK,而不是默认JAVA_HOME配置。需要激活 Jenv 的 maven 插件。

bash
$ jenv enable-plugin maven
maven plugin activated

$ jenv disable-plugin maven
maven disabled

nano的使用

高亮

bash
# 复制配置文件
$ sudo cp /etc/nanorc ~/.nanorc
# 加入包含
$ sudo nano .nanorc
include "/usr/share/nano/*.nanorc"

更多高亮 https://github.com/scopatz/nanorc

Vim的使用

三种模式: 正常模式,编辑模式,命令行模式 区分大小写

  • i -编辑模式(插入左侧)
  • a - 附后
  • I -行前
  • A - 行后
  • esc -正常模式
  • : -命令行模式
  • :q -仅退出
  • :q! -不保存退出
  • :wq -保存退出
  • HJKL -上下左右
  • o -新增下一行
  • O -新增上一行
  • G -到最后一行
  • gg -到第一行
  • yy -复制这一行
  • p -粘贴
  • dd -删除当前行
  • . -重复上一次操作
  • u -撤销前次操作
  • ctrl+r - 恢复前次操作
  • dw -删除单词
  • cw -改变单词
  • w -下个单词首部
  • e -下个单词尾部
  • b -上个单词首部
  • / -搜索

开启行号

bash
# 看版本和配置文件位置
$ vim --version
# 打开配置文件
$ vim $HOME/.vimrc
# 新增
set number

iotop 监控磁盘I/O使用状况工具

用法

shell
iotop(选项)

选项

shell
-o:只显示有io操作的进程
-b:批量显示,无交互,主要用作记录到文件。
-n NUM:显示NUM次,主要用于非交互式模式。
-d SEC:间隔SEC秒显示一次。
-p PID:监控的进程pid。
-u USER:监控的进程用户。

ncdu 磁盘使用分析查看工具

用法

shell
ncdu <options> <directory>

查看当前目录磁盘使用,直接:

shell
ncdu
# 按 Q 键退出

查看指定目录磁盘使用:

shell
ncdu /  #根目录,全盘
ncdu /home
# 按 Q 键退出

Fail2Ban的使用

bash
$ apt install fail2ban

MariaDB相关

安全配置脚本

mysql_secure_installation

改密码

sql
MariaDB [(none)]> grant all privileges on *.* to 'root'@'%' identified by '123456qwer';
Query OK, 0 rows affected (0.005 sec)
 
MariaDB [(none)]> delete from mysql.user where User='';
Query OK, 2 rows affected (0.006 sec)
 
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

系统和硬件信息命令inxi

安装

bash
# 基于Debian的发行版
sudo apt install inxi

# 基于RHEL的发行版:
# 安装EPEL软件仓库:
sudo yum install epel-release
# 使用如下命令安装inxi
sudo yum install inxi

使用

bash
inxi -Fx0

常见错误处理

使用OpenJDK错误处理

bash
# 缺少字体
$ apt install fontconfig
$ apt install fonts-dejavu

Released under the MIT License.