VPS常用命令
curl https://get.volta.sh | bash
export VOLTA_HOME="$HOME/.volta"
export PATH="$VOLTA_HOME/bin:$PATH"
source ~/.bashrc
volta install node@16.0.0
切换node版本只需再次安装需要的版本即可自动切换
wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && bash menu.sh [option] [lisence/url/token]
warp [option] [lisence]
curl https://www.visa.cn/cdn-cgi/trace
docker run --rm alpine/curl curl ping0.cc/geo
官方安装脚本:
curl -fsSL https://get.docker.com | sh
会以插件的形式自动安装
docker compose
输入docker compose version
查看版本
国内安装脚本 (说明)
bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/DockerInstallation.sh)
或者使用阿里云安装源
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
hash -r
dpkg --print-architecture
uname -a
cat /etc/os-release
lsb_release -a
按目录名称查找
find / -type d -iname "目录名" 2>/dev/null
按文件名称查找
find / -type f -name "*文件名*" 2>/dev/null
按文件大小查找
find / -type f -size +20M -exec ls -lh {} \; 2>/dev/null
全局搜索关键字,并输出它们的路径
sudo grep -r -l "关键字" /
当前目录开始
sudo find . -type f -exec grep -IHn '关键字' {} \;
根目录开始
sudo find / -type f -exec grep -IHn '关键字' {} \;
文件重命名命令:mv
显示所有与主机建立连接的IP
TCP 连接:
ss -tnp
UDP 连接:
ss -unp
sudo ss -tnp | grep ":22" | grep -v "自己的IP" | awk '{print $6}' | awk -F '[=,]' '{print $2}' | xargs -r sudo kill -9
显示内存占用最大的10个进程
ps aux --sort=-%mem | head -n 10
mem为内存,可改为cpu
一键脚本
bash <(wget -qO- https://github.com/sky22333/rootvps/raw/main/root.sh)
sudo hostnamectl set-hostname wovow
sudo bash -c 'echo "127.0.0.1 wovow" >> /etc/hosts'
或者
hostnamectl set-hostname localhost
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
查看当前时间(注意你与服务器之间的延迟)
date
- 安装
sudo apt-get install ntpdate
- 配置时间服务器
sudo ntpdate -u time.cloudflare.com // cloudflare时间服务器
sudo ntpdate -u time.windows.com // 微软时间服务器
sudo ntpdate -u ntp.aliyun.com // 阿里云时间服务器
- 查看
timedatectl status
写入配置
echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
应用配置
sudo sysctl -p
sudo nano /etc/locale.gen
# zh_CN.UTF-8 UTF-8 // 取消这行注释
sudo locale-gen
sudo update-locale LANG=zh_CN.UTF-8
sudo localectl set-locale LANG=zh_CN.UTF-8
Debian/Ubuntu 命令:
apt update && apt install -y curl wget git zip tar lsof vim sudo
代码补全
bash_completion
apk包更新
apk update
apk包安装
apk add curl wget vim zip
wget -qO- git.io/besttrace | bash
curl https://raw.githubusercontent.com/zhanghanyun/backtrace/main/install.sh -sSf | sh
bash <(curl -L -s check.unlock.media)
bash <(curl -L -s check.unlock.media) -M 4
bash <(curl -L -s check.unlock.media) -M 6
sudo lsof -i -P -n
ss -tuln
ss -tunp
lsof -i:端口号
kill PID数字
sudo ufw allow 端口号
sudo ufw allow 起始端口:结束端口
sudo ufw enable
# 重启ufw防火墙
sudo ufw deny 端口号
sudo ufw allow from 192.168.1.100 to any port 22
# 多IP用英文的逗号分开
mv config.txt config.json
mv shell.txt shell.sh
sudo fallocate -l 3G /swapfile && sudo chmod 700 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile && echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
firewall-cmd --state
# 查看防火墙状态
systemctl stop firewalld.service
# 停止防火墙
systemctl disable firewalld.service
# 禁止防火墙开机自启
bash <(wget -qO- https://gitlab.com/yishijie/shell/raw/main/bbr.sh)
查看
sysctl net.ipv4.tcp_congestion_control
wget https://raw.githubusercontent.com/TeamPGM/PagerMaid-Pyro/development/utils/install.sh -O install.sh && chmod +x install.sh && bash install.sh
使用该脚本会将 Pagermaid-Pyro
安装至 /var/lib/pagermaid
目录下。
在 Windows 8.1/10/11 上,右键单击 Windows 开始菜单并 选择 PowerShell 或终端(非 CMD)
irm https://massgrave.dev/get | iex
稍微等待一下,他会自动适配,并激活您的系统,当出现 Successful 的时候说明系统已经激活成功了
查看已连接过的wifi:
netsh wlan show profile
查看密码:
netsh wlan show profile name="WiFi名称" key=clear
打印到C盘:
netsh wlan export profile folder=C:\ key=clear
- win系统网络故障常用命令,
win+x
打开终端管理员执行
命令 | 作用 |
---|---|
netsh winsock reset |
重置 Windows 套接字(Winsock)目录,解决网络连接问题。 |
netsh int ip reset |
重置 TCP/IP 协议栈,修复配置错误导致的网络问题。 |
ipconfig /release |
释放当前计算机的 IP 地址,断开当前网络连接。 |
ipconfig /renew |
请求 DHCP 服务器获取新的 IP 地址,恢复网络连接。 |
ipconfig /flushdns |
清空 DNS 缓存,解决因缓存问题无法访问网站的问题。 |
nslookup baidu.com |
查看网址用的什么dns进行解析。 |
代理工具SSH工具下载
网站收藏or服务器
轻量级Liunx文件管理系统
支持实时管理liunx系统文件的项目
安装:
curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
启动:
filebrowser -a 0.0.0.0 -r /
设置—用户管理—用户编辑—增加文件管理命令unzip tar chmod
示例unzip you.zip
/ chmod -R 777 home
Liunx配置wrap
debian系统安装:
curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list
sudo apt-get update && sudo apt-get install cloudflare-warp -y
注册客户端:
warp-cli registration new
开启代理模式:
warp-cli mode proxy
启动wrap:
执行此命令前必须开启代理模式
否则机器可能失联
warp-cli connect
wrap将代理本地的40000
端口
更改代理端口:warp-cli proxy port 40000
配置文件:cd /var/lib/cloudflare-warp
查看代理IP:
curl -x "socks5://127.0.0.1:40000" ipinfo.io
开启全局代理:
export ALL_PROXY=socks5://127.0.0.1:40000
关闭全局代理:
unset ALL_PROXY
关闭wrap:
warp-cli disconnect
Git推送到GitHub仓库教程
git init
git remote add origin git@github.com:用户名/仓库名.git
git checkout -b main
git checkout main
git add .
git commit -m "描述你的更改"
git push origin main
main
为分支名
输入用户名和key密钥即可推送完成
git config --global --unset credential.helper
git fetch upstream
合并上游所有更新
git merge upstream/main
main为本地分支
git branch -r --contains 提交哈希
git cherry-pick -m 1 提交哈希
这里的-m 1
表示选择合并的提交中的第一个父提交的更改。
如果不是合并的提交则去掉-m 1
多个提交哈希
用空格隔开
标记所有冲突已解决
git add .
继续之前因冲突而中止的提交
git cherry-pick --continue
本地dev分支推送到远程dev分支
git push origin refs/heads/dev:refs/heads/dev
(可选)放弃提交
git cherry-pick --abort
获取全部请求
git fetch origin 'refs/pull/*/head:refs/pull/origin/*'
切换到主分支
git checkout main
合并指定的请求(1为#后面的编号)
git merge refs/pull/origin/1
查看冲突
git status
将显示冲突的文件用
vim
打开,删除你不要的代码然后保存文件,或者vscode
可视化选择。
标记所有冲突已解决
git add .
完成合并
git commit -m "合并分支1"
推送到main
分支
git push origin main
rm -rf .git # 删除 Git 版本管理
git init # 重新初始化 Git
git add . # 添加所有文件
git commit -m "update" # 提交所有文件
git remote add origin https://github.com/your-username/your-repo.git # 重新关联仓库
git push --force origin main # 强制推送覆盖远程历史
ansible批量管理主机运维工具
bash <(wget -qO- https://github.com/sky22333/shell/raw/main/tmp/ansible.sh)
sudo apt update
sudo apt install ansible -y
mkdir -p /etc/ansible && cd /etc/ansible && touch ansible.cfg hosts renwu.yml
ansible.cfg
配置Ansible的全局设置。
hosts
定义要管理的主机和主机组。
renwu.yml(或playbook)
描述要在主机上执行的任务和操作步骤。
ansible.cfg
中添加以下配置
[defaults]
host_key_checking = False
ansible_ssh_common_args = '-o StrictHostKeyChecking=no'
hosts
中添加被控主机示例
[myservers]
1 ansible_host=192.168.1.1 ansible_user=root ansible_port=22 ansible_ssh_pass=password1
2 ansible_host=192.168.1.2 ansible_user=root ansible_port=22 ansible_ssh_pass=password2
3 ansible_host=192.168.1.3 ansible_user=root ansible_port=22 ansible_ssh_pass=password3
4 ansible_host=192.168.1.4 ansible_user=root ansible_port=22 ansible_ssh_pass=password4
5 ansible_host=192.168.1.5 ansible_user=root ansible_port=22 ansible_ssh_pass=password5
(可选)查看所有被控机的信息
ansible-inventory --list -i /etc/ansible/hosts
ansible -m ping all
renwu.yml
中添加任务示例
---
# 定义要执行任务的主机组
- hosts: myservers
become: yes # 以管理员权限运行命令
tasks:
- name: 将Shell脚本复制到远程主机
copy:
# 本地脚本路径
src: /etc/ansible/script.sh
# 远程主机上的目标路径
dest: /tmp/script.sh
# 设置脚本权限为可执行
mode: '0755'
- name: 在远程主机上执行Shell脚本
shell: /tmp/script.sh # 在远程主机上执行脚本
或者直接执行远程脚本示例
---
# 定义要执行任务的主机组
- hosts: myservers
become: yes # 以管理员权限运行命令
tasks:
- name: 更新包列表并安装所需的软件包
shell: |
apt update
apt install curl wget git zip tar lsof -y
- name: 在远程主机上执行Shell脚本
shell: bash <(wget -qO- https://github.com/sky22333/shell/raw/main/vmess-ws.sh)
args:
executable: /bin/bash # 确保使用bash执行命令
- 对所有被控机器运行
renwu.yml
中的任务
ansible-playbook renwu.yml
- 临时对所有主机执行普通命令
ansible all -a "pwd"
- 临时对所有主机运行远程脚本
ansible all -m shell -a "bash <(wget -qO- https://github.com/sky22333/shell/raw/main/vmess-ws.sh)"
- 临时将本地脚本复制给所有被控主机并执行
ansible all -m copy -a "src=/etc/ansible/script.sh dest=/tmp/script.sh mode=0755"
ansible all -m shell -a "/tmp/script.sh"
- 临时对1,3号主机执行shell命令
ansible 1,3 -m shell -a "你的命令"
- 临时对1,3号主机执行普通命令
ansible 1,3 -a "pwd"
命令结尾后面追加
-v
选项会显示被控机器详细的执行信息
-m
用于指定 Ansible 模块
-a
用于指定传递给模块的参数或命令
模块 | 指令 | 中文解释 | 用法示例 |
---|---|---|---|
shell |
-a |
执行 shell 命令。支持管道、重定向等 shell 特性。 | ansible all -m shell -a "pwd" |
command |
-a |
执行命令,不通过 shell。默认模块 | ansible all -m command -a "ls -l" |
copy |
-a |
复制文件或目录到目标主机。 | ansible all -m copy -a "src=/local/file dest=/remote/file mode=0644" |
file |
-a |
管理文件和目录的属性(如权限、所有权等)。 | ansible all -m file -a "path=/remote/file state=absent" |
yum |
-a |
使用 Yum 包管理器安装、更新或删除软件包(适用于 RHEL/CentOS)。 | ansible all -m yum -a "name=nginx state=present" |
apt |
-a |
使用 APT 包管理器安装、更新或删除软件包(适用于 Debian/Ubuntu)。 | ansible all -m apt -a "name=nginx state=latest" |
service |
-a |
管理服务(如启动、停止、重启服务)。 | ansible all -m service -a "name=nginx state=started" |
systemd |
-a |
管理 systemd 服务(如启动、停止、重启服务)。 | ansible all -m systemd -a "name=nginx state=started" |
user |
-a |
管理用户账户(如创建、删除用户)。 | ansible all -m user -a "name=alice state=present" |
group |
-a |
管理用户组(如创建、删除组)。 | ansible all -m group -a "name=admin state=present" |
git |
-a |
管理 Git 仓库(如克隆、拉取、提交等)。 | ansible all -m git -a "repo=https://github.com/user/repo.git dest=/path/to/repo" |
template |
-a |
使用 Jinja2 模板引擎渲染模板文件。 | ansible all -m template -a "src=template.j2 dest=/etc/config" |
cron |
-a |
管理 cron 任务。 | ansible all -m cron -a "name='Backup' minute='0' hour='2' job='/usr/bin/backup.sh'" |
wait_for |
-a |
等待某个条件满足(如端口开放、文件存在等)。 | ansible all -m wait_for -a "port=80 delay=10 timeout=300" |
docker_container |
-a |
管理 Docker 容器(如启动、停止、删除容器)。 | ansible all -m docker_container -a "name=my_container state=started" |
docker_image |
-a |
管理 Docker 镜像(如拉取、删除镜像)。 | ansible all -m docker_image -a "name=nginx tag=latest state=present" |
lineinfile |
-a |
在文件中插入、删除或修改行。 | ansible all -m lineinfile -a "path=/etc/hosts line='127.0.0.1 localhost' state=present" |
ini_file |
-a |
修改 INI 配置文件。 | ansible all -m ini_file -a "path=/etc/myconfig.ini section=database option=host value=localhost" |
debug |
-a |
打印调试信息。 | ansible all -m debug -a "msg='This is a debug message'" |
- ok: 表示在该主机上成功完成的任务数。
- changed: 表示在该主机上有多少任务进行了更改(如文件被复制、脚本被执行)。
- unreachable: 表示无法连接的主机数量。
- failed: 表示任务失败的数量。
- skipped: 表示被跳过的任务数量。
- rescued: 表示在任务失败后被恢复的数量。
- ignored: 表示被忽略的任务数量。
- 绿色:任务顺利完成
- 橙色:任务执行后有变化,比如文件被修改或某些服务被重启。
- 红色:任务执行失败,一般会终止剩余的所有任务。
/etc/ansible/hosts
配置可以这样写
[all:vars]
ansible_user=root
ansible_ssh_pass=your_password
ansible_port=22
[myservers]
1 ansible_host=192.168.1.101
2 ansible_host=192.168.1.102
3 ansible_host=192.168.1.103
Finalshell文件的一些信息
- Finalshell是一个强大的国产SSH工具
- finalshell的安装目录下的一些配置信息
/backup # 服务器SSH连接备份文件夹
/conn # 服务器SSH连接配置文件夹
config.json # 基本配置文件
knownhosts.json # 服务器密钥
tconfig.json # 一些缓存
snap和winget包管理器
发行版 | 安装Snap | 启动Snap服务 | 安装Docker示例 | 安装Caddy示例 |
---|---|---|---|---|
Debian Uubuntu |
sudo apt update && sudo apt install snapd |
sudo systemctl enable snapd && sudo systemctl start snapd |
sudo snap install docker |
sudo snap install caddy |
CentOS | sudo yum install epel-release && sudo yum install snapd && sudo systemctl enable --now snapd.socket |
sudo systemctl enable snapd && sudo systemctl start snapd |
sudo snap install docker |
sudo snap install caddy |
Alpine Linux |
apk add snapd && rc-update add snapd |
service snapd start |
snap install docker |
snap install caddy |
Kali Linux |
sudo apt update && sudo apt install snapd |
sudo systemctl enable snapd && sudo systemctl start snapd |
sudo snap install docker |
sudo snap install caddy |
-
重启系统:安装snap后,建议重新启动系统或重新登录,以确保snap的路径正确添加到系统环境中。
-
创建符号链接:某些系统(如CentOS)可能需要创建符号链接:
sudo ln -s /var/lib/snapd/snap /snap
- 安装核心组件:在安装其他软件包之前,建议先安装核心snap组件:
sudo snap install core
-
Alpine Linux注意事项:Alpine Linux对snap的支持可能不如其他发行版完善,使用时可能会遇到兼容性问题。
-
权限问题:如遇权限错误,请使用
sudo
运行snap命令。 -
网络连接:确保系统有稳定的网络连接,snap需要从在线存储库下载软件包。
-
版本选择:安装软件时可以指定版本,例如:
sudo snap install docker --channel=latest/stable
- 查看已安装的snap:使用以下命令查看已安装的snap:
snap list
- 更新snap:更新所有已安装的snap:
sudo snap refresh
- 删除snap:删除某个snap:
sudo snap remove [包名]
操作 | 命令 | 说明 |
---|---|---|
安装 winget | 无需单独安装 | winget 已预装在 Windows 10 1709 及更高版本 |
更新 winget | winget upgrade winget |
更新 winget 自身 |
搜索软件 | winget search <软件名> |
搜索可用的软件包 |
安装软件 | winget install <软件名> |
安装指定的软件包 |
卸载软件 | winget uninstall <软件名> |
卸载指定的软件包 |
更新软件 | winget upgrade <软件名> |
更新指定的软件包 |
更新所有软件 | winget upgrade --all |
更新所有已安装的软件包 |
列出已安装软件 | winget list |
显示所有已安装的软件包 |
-
安装 winget:
- 在较新的 Windows 10 和 Windows 11 系统中,winget 已经预装。
- 如果系统中没有 winget,可以从 Microsoft Store 安装 "应用安装程序"(App Installer)。
-
使用管理员权限:
- 某些操作可能需要管理员权限,可以在命令提示符或 PowerShell 中以管理员身份运行。
-
指定版本:
- 安装特定版本的软件:
winget install <软件名> --version <版本号>
- 安装特定版本的软件:
-
静默安装:
- 使用
--silent
参数进行静默安装:winget install <软件名> --silent
- 使用
-
接受协议:
- 自动接受许可协议:
winget install <软件名> --accept-package-agreements
- 自动接受许可协议:
-
查看软件信息:
- 获取软件详细信息:
winget show <软件名>
- 获取软件详细信息:
-
导出已安装软件列表:
- 导出为 JSON 文件:
winget export -o <文件名>.json
- 导出为 JSON 文件:
-
从文件安装软件:
- 从导出的文件安装软件:
winget import -i <文件名>.json
- 从导出的文件安装软件:
-
设置:
- 管理 winget 设置:
winget settings
- 管理 winget 设置:
-
源管理:
- 添加新的软件源:
winget source add <源名称> <源URL>
- 列出所有源:
winget source list
- 添加新的软件源:
注意:某些软件可能不在 winget 的默认源中。在这种情况下,可能需要添加额外的源或使用其他安装方法。
数据库常用命令
数据库 | 操作 | 命令 | 描述 |
---|---|---|---|
MySQL | 更新软件包列表 | sudo apt update |
更新可用软件包列表 |
安装 MySQL 服务器 | sudo apt install mysql-server |
安装 MySQL 服务器 | |
启动 MySQL 服务 | sudo systemctl start mysql |
启动 MySQL 服务 | |
检查 MySQL 服务状态 | sudo systemctl status mysql |
检查 MySQL 服务的运行状态 | |
运行安全安装脚本 | sudo mysql_secure_installation |
配置 MySQL 安全选项 | |
登录 MySQL | sudo mysql -u root -p |
登录 MySQL,输入 root 用户密码 | |
MariaDB | 更新软件包列表 | sudo apt update |
更新可用软件包列表 |
安装 MariaDB 服务器 | sudo apt install mariadb-server |
安装 MariaDB 服务器 | |
启动 MariaDB 服务 | sudo systemctl start mariadb |
启动 MariaDB 服务 | |
检查 MariaDB 服务状态 | sudo systemctl status mariadb |
检查 MariaDB 服务的运行状态 | |
运行安全安装脚本 | sudo mysql_secure_installation |
配置 MariaDB 安全选项 | |
登录 MariaDB | sudo mysql -u root -p |
登录 MariaDB,输入 root 用户密码 |
功能分类 | 命令 | 描述 |
---|---|---|
登录数据库 | mysql -u 用户名 -p |
登录 MySQL,使用指定的用户名,-p 会提示输入密码 |
显示数据库 | SHOW DATABASES; |
列出当前 MySQL 服务器中的所有数据库 |
使用数据库 | USE 数据库名; |
切换到指定数据库 |
创建数据库 | CREATE DATABASE 数据库名; |
创建一个新的数据库 |
删除数据库 | DROP DATABASE 数据库名; |
删除指定数据库 |
显示当前数据库 | SELECT DATABASE(); |
显示当前正在使用的数据库 |
显示数据库表 | SHOW TABLES; |
列出当前数据库中的所有表 |
查看表结构 | DESCRIBE 表名; |
查看表的结构 (字段、类型、主键等) |
查看表数据 | SELECT * FROM 表名; |
查看表里的数据 |
创建表 | CREATE TABLE 表名 (字段1 数据类型, 字段2 数据类型, ...); |
创建一张表,指定列和数据类型 |
删除表 | DROP TABLE 表名; |
删除指定的表 |
插入数据 | INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...); |
插入一条数据 |
查询数据 | SELECT 字段1, 字段2 FROM 表名 WHERE 条件; |
查询表中的数据,可以使用条件过滤 |
更新数据 | UPDATE 表名 SET 字段1=值1 WHERE 条件; |
更新指定的表数据 |
删除数据 | DELETE FROM 表名 WHERE 条件; |
删除符合条件的数据 |
显示创建表语句 | SHOW CREATE TABLE 表名; |
显示指定表的创建语句 |
清空表数据 | TRUNCATE TABLE 表名; |
清空表中的所有数据,但保留表结构 |
查看索引 | SHOW INDEX FROM 表名; |
查看表中所有的索引 |
创建索引 | CREATE INDEX 索引名 ON 表名 (字段); |
创建索引,提升查询速度 |
删除索引 | DROP INDEX 索引名 ON 表名; |
删除指定的索引 |
备份数据库 | mysqldump -u 用户名 -p 数据库名 > 备份文件.sql |
备份数据库,将数据库内容导出为 .sql 文件 |
恢复数据库 | mysql -u 用户名 -p 数据库名 < 备份文件.sql |
恢复数据库,将 .sql 文件导入指定数据库 |
创建用户 | CREATE USER '用户名'@'localhost' IDENTIFIED BY '密码'; |
创建一个新的 MySQL 用户 |
删除用户 | DROP USER '用户名'@'localhost'; |
删除 MySQL 用户 |
授权权限 | GRANT ALL PRIVILEGES ON 数据库名.* TO '用户名'@'localhost'; |
授予用户对某个数据库的所有权限 |
显示用户权限 | SHOW GRANTS FOR '用户名'@'localhost'; |
显示指定用户的权限 |
撤销权限 | REVOKE ALL PRIVILEGES ON 数据库名.* FROM '用户名'@'localhost'; |
撤销指定用户对某个数据库的权限 |
刷新权限 | FLUSH PRIVILEGES; |
刷新 MySQL 权限表,使权限更改生效 |
查看服务器状态 | SHOW STATUS; |
查看 MySQL 服务器的状态和性能指标 |
查看数据库引擎 | SHOW ENGINES; |
显示 MySQL 支持的所有存储引擎 |
查看连接信息 | SHOW PROCESSLIST; |
显示当前 MySQL 的所有连接信息 |
- 大多数 SQL 语句都以分号
;
结尾。 - 如果 MySQL 的权限系统发生变动(如添加或撤销用户权限),建议运行
FLUSH PRIVILEGES;
以刷新权限。
功能分类 | 命令 | 描述 |
---|---|---|
安装 SQLite | sudo apt install sqlite3 |
在 Linux(Ubuntu)中安装 SQLite |
连接 SQLite | sqlite3 数据库名.db |
连接到 SQLite 数据库(如果不存在则创建) |
退出 SQLite | .quit |
退出 SQLite 命令行工具 |
显示数据库表 | .tables |
显示当前数据库中的所有表 |
查看表结构 | .schema 表名 |
显示指定表的创建语句 |
创建表 | CREATE TABLE 表名 (字段1 数据类型, 字段2 数据类型, ...); |
创建一张表,指定字段和数据类型 |
插入数据 | INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...); |
插入一条数据 |
查询数据 | SELECT 字段1, 字段2 FROM 表名 WHERE 条件; |
查询表中的数据,可以使用条件过滤 |
更新数据 | UPDATE 表名 SET 字段1=值1 WHERE 条件; |
更新指定的表数据 |
删除数据 | DELETE FROM 表名 WHERE 条件; |
删除符合条件的数据 |
删除表 | DROP TABLE 表名; |
删除指定的表 |
查看索引 | PRAGMA index_list(表名); |
查看指定表的索引 |
创建索引 | CREATE INDEX 索引名 ON 表名 (字段); |
创建索引,提升查询速度 |
删除索引 | DROP INDEX 索引名; |
删除指定的索引 |
导出数据库 | 先.output 文件名.sql 再.dump |
导出整个数据库,保存到指定的 SQL 文件 |
导入数据库 | .read 文件名.sql |
从 SQL 文件导入数据到当前数据库 |
打开数据库 | .open 数据库名.db |
打开或切换到另一个数据库 |
操作 | 命令 | 说明 |
---|---|---|
安装 PostgreSQL | sudo apt update sudo apt install postgresql postgresql-contrib |
更新包管理器并安装 PostgreSQL 和相关插件 |
启动 PostgreSQL 服务 | sudo systemctl start postgresql |
启动 PostgreSQL 服务 |
重启 PostgreSQL 服务 | sudo systemctl restart postgresql |
重启 PostgreSQL 服务 |
停止 PostgreSQL 服务 | sudo systemctl stop postgresql |
停止 PostgreSQL 服务 |
检查 PostgreSQL 状态 | sudo systemctl status postgresql |
检查 PostgreSQL 服务的当前状态 |
设置 PostgreSQL 开机启动 | sudo systemctl enable postgresql |
设置 PostgreSQL 随系统启动自动运行 |
切换到 postgres 用户 | sudo -i -u postgres |
以 postgres 管理员用户登录 |
以指定用户登录 | psql -U 用户名 -d 数据库名 |
以指定用户登录指定数据库 |
进入 PostgreSQL shell | psql |
进入 PostgreSQL 的交互式命令行 shell |
退出 PostgreSQL shell | \q |
退出 PostgreSQL shell |
查看数据库列表 | \l |
显示当前 PostgreSQL 实例中的所有数据库 |
创建数据库 | CREATE DATABASE 数据库名; |
创建一个新数据库 |
删除数据库 | DROP DATABASE 数据库名; |
删除指定的数据库 |
查看表格列表 | \dt |
显示当前数据库中的所有表格 |
创建表格 | CREATE TABLE 表格名 (列1 数据类型, 列2 数据类型, ...); |
在数据库中创建一个新表格,并定义其列和数据类型 |
插入数据 | INSERT INTO 表格名 (列1, 列2, ...) VALUES (值1, 值2, ...); |
向表格中插入一条数据记录 |
查询数据 | SELECT * FROM 表格名; |
从表格中查询所有数据 |
创建用户 | CREATE USER 用户名 WITH PASSWORD '密码'; |
创建一个新用户,并为其设置密码 |
给用户授权 | GRANT ALL PRIVILEGES ON DATABASE 数据库名 TO 用户名; |
为指定的用户授权访问和操作指定数据库的所有权限 |
删除用户 | DROP USER 用户名; |
删除一个指定的用户 |
修改用户密码 | ALTER USER 用户名 WITH PASSWORD '新密码'; |
修改指定用户的密码 |
备份数据库 | pg_dump 数据库名 > 备份文件名.sql |
将指定数据库备份到一个 .sql 文件中 |
还原数据库 | psql 数据库名 < 备份文件名.sql |
从备份的 .sql 文件还原数据库 |
rsync文件传输
选项 | 示例命令 | 说明 |
---|---|---|
-a |
rsync -av /source/ /destination/ |
归档模式,递归传输并保持文件属性 |
-v |
rsync -av /source/ /destination/ |
详细输出,显示传输过程 |
-z |
rsync -avz /source/ /destination/ |
传输时压缩文件 |
-h |
rsync -avh /source/ /destination/ |
人性化输出,显示更易读的文件大小 |
--progress |
rsync -av --progress /source/ /destination/ |
显示传输进度 |
-e |
rsync -av -e ssh /source/ root@192.168.9.1:/destination/ |
指定使用的远程 shell(如 ssh) |
--delete |
rsync -av --delete /source/ /destination/ |
删除目标目录中源目录不存在的文件 |
示例描述 | 示例命令 | 说明 |
---|---|---|
本地文件同步 | rsync -av /source/ /home/ |
同步源目录中的文件到目标目录 |
远程文件同步 | rsync -av /source/ root@192.168.9.1:/home/ |
从本地同步到远程 |
从远程同步到本地 | rsync -av root@192.168.9.1:/source/ /home/ |
从远程同步到本地 |
使用 SSH 进行安全传输 | rsync -avz -e ssh /source/ root@192.168.9.1:/home/ |
使用 SSH 进行安全文件传输 |
删除目标目录中不存在的文件 | rsync -av --delete /source/ /home/ |
在目标目录中删除源目录中不存在的文件 |
启用SSH密钥连接
适用于
Debian
和Ubuntu
系统
ssh-keygen -t ed25519
一路回车即可,生成的
id_ed25519
文件为私钥,使用这个连接服务器,id_ed25519.pub
文件为公钥。
cd ~/.ssh
cat id_ed25519.pub >> authorized_keys
sudo vim /etc/ssh/sshd_config
# 修改SSH服务端口
Port 2222
# 启用公钥认证
PubkeyAuthentication yes
# 指定存储公钥的文件位置(增加此项)
AuthorizedKeysFile .ssh/authorized_keys
# 禁止使用空密码登录
PermitEmptyPasswords no
# 禁止使用密码认证登录
PasswordAuthentication no
sudo systemctl restart ssh
nmap端口扫描
命令参数 | 作用 | 使用示例 |
---|---|---|
-p <port> |
指定扫描的单一端口或端口范围 | nmap -p 80 192.168.1.1 扫描 80 端口 |
-p <port1,port2,...> |
扫描多个指定端口 | nmap -p 80,443,22 192.168.1.1 扫描 80、443、22 端口 |
-p 1-1024 |
扫描指定端口范围 | nmap -p 1-1024 192.168.1.1 扫描 1 到 1024 的端口 |
-sS |
执行 TCP SYN 扫描(半开放扫描),不会完整建立连接 | nmap -sS 192.168.1.1 扫描目标主机的端口(最常用的扫描方式) |
-sT |
执行 TCP 连接扫描(完全建立连接) | nmap -sT 192.168.1.1 进行 TCP 全连接扫描 |
-sU |
执行 UDP 扫描,适用于 UDP 服务 | nmap -sU -p 53 192.168.1.1 扫描 UDP 53 端口(DNS 服务) |
-sP |
执行 Ping 扫描,检查主机是否存活 | nmap -sP 192.168.1.0/24 扫描整个网段内活跃的主机 |
-sA |
执行 ACK 扫描,用于防火墙规则检测 | nmap -sA 192.168.1.1 执行 ACK 扫描 |
-sW |
执行 Window 扫描,基于 TCP/IP 窗口大小进行扫描 | nmap -sW 192.168.1.1 执行 TCP Window 扫描 |
-sM |
执行 Maimon 扫描,基于 TCP 标志位进行扫描 | nmap -sM 192.168.1.1 执行 Maimon 扫描 |
-O |
启用操作系统探测,识别目标主机操作系统 | nmap -O 192.168.1.1 执行操作系统探测 |
-A |
启用操作系统探测、版本探测、脚本扫描和 traceroute 跟踪 | nmap -A 192.168.1.1 执行详细扫描(包括 OS、版本、Traceroute) |
-v |
增加输出的详细程度 | nmap -v -p 80 192.168.1.1 显示更多扫描过程信息 |
-vv |
显示非常详细的输出信息 | nmap -vv -p 80 192.168.1.1 更详细的扫描信息 |
-T<0-5> |
设置扫描速度,从 0(最慢)到 5(最快),默认是 3 | nmap -T4 192.168.1.0/24 设置扫描速度为 4 |
--open |
只显示开放的端口 | nmap --open -p 80,443 192.168.1.0/24 仅显示开放的 80 和 443 端口 |
-Pn |
禁用主机发现(即不进行 Ping 扫描),直接扫描端口 | nmap -Pn 192.168.1.0/24 扫描整个网段内的主机,不进行 ping 扫描 |
-oN <file> |
将扫描结果保存到普通文本文件 | nmap -oN result.txt 192.168.1.0/24 将扫描结果保存到 result.txt |
-oX <file> |
将扫描结果保存为 XML 格式 | nmap -oX result.xml 192.168.1.0/24 将扫描结果保存为 XML 文件 |
-oG <file> |
将扫描结果保存为 Grepable 格式 | nmap -oG result.gnmap 192.168.1.0/24 将扫描结果保存为 Grepable 格式 |
-iL <file> |
从文件中读取 IP 地址列表进行扫描 | nmap -iL targets.txt 从 targets.txt 文件中读取 IP 地址进行扫描 |
--script <script> |
使用 Nmap 脚本引擎执行脚本扫描(可以指定脚本名称) | nmap --script http-title 192.168.1.1 执行 http-title 脚本扫描 |
-h |
显示帮助信息 | nmap -h 显示 nmap 的帮助信息 |
-T0 |
设置为最慢的扫描,适合避免被防火墙拦截 | nmap -T0 192.168.1.1 执行非常慢的扫描,避开防火墙检测 |
-T5 |
设置为最快的扫描,适合高速网络和容忍扫描被检测的情况 | nmap -T5 192.168.1.1 执行最快的扫描,适用于测试环境 |
--traceroute |
执行路由追踪,显示目标主机的路由路径 | nmap --traceroute 192.168.1.1 执行 traceroute 跟踪 |
-6 |
启用 IPv6 扫描模式 | nmap -6 2001:db8::1 执行 IPv6 扫描 |
--version-all |
显示所有可能的版本信息 | nmap --version-all 192.168.1.1 显示目标主机的所有版本信息 |
--unprivileged |
以非特权模式运行,避免需要 root 权限 | nmap --unprivileged 192.168.1.1 以非特权模式进行扫描 |
例如扫描路由器IP
nmap -p 80 -Pn -T5 192.168.0.0/24