我的终端AI助手: Mods使用实践

Mods 是一个能让你在终端里与大语言模型(LLM)轻松交互的工具。除了直接问答,它强大的管道特性和灵活的参数配置,使其能够与Shell脚本深度融合,创造出高效的自动化工作流。 本文将分享我个人的一些mods使用实践,通过几个自定义的Shell函数和别名,将AI能力无缝集成到日常的命令行操作中。 ...

2025-07-18 · 4 分钟 · 1547 字 · Niuhe

FRP内网穿透与NoMachine远程桌面使用指南

本文介绍如何使用FRP实现内网穿透,并结合NoMachine实现高效的远程桌面控制方案。 ...

2025-05-30 · 2 分钟 · 920 字 · Niuhe

局域网搭建文件分享服务

...

2024-07-21 · 2 分钟 · 809 字 · Niuhe

制作Docker镜像模拟服务器节点

...

2024-05-05 · 1 分钟 · 421 字 · Niuhe

奈飞文化手册

《奈飞文化手册》 范珂译 ...

2023-01-07 · 8 分钟 · 3785 字 · Niuhe

世界观

《世界观:现代人必须要懂的科学哲学和科学史(原书第2版)》 理查德·德威特(Richard DeWitt) ...

2023-01-07 · 10 分钟 · 4724 字 · Niuhe

tmux-usage

tmux是将会话和窗口解绑的工具

2022-12-26 · 3 分钟 · 1092 字 · Niuhe

docker基本使用

CheatSheet Docker 核心架构: 客户端 Client 服务器 Docker daemon 镜像 Image Registry 容器 Container 容器基本技术: cgroup 资源限额 namespace 资源隔离 Mount UTS IPC PID Network User Docker 采用 C/S 架构,客户端向服务器发送请求,服务器负责构建、运行和分发容器。客户端和服务器可以运行在同一个 host 上,客户端也可以通过 socket 或者 REST API 和远程服务器通信。docker 客户端是和服务器通信的命令行工具。服务器负责创建、运行、监控容器,构建、存储镜像。镜像是一个只读模板,通过镜像可以创建容器。容器就是镜像运行的实例。Registry 是存放镜像的仓库。 ...

2021-01-23 · 3 分钟 · 1235 字 · Niuhe

awk基本使用

快捷键 awk 是 linux 上用于文本处理的脚本语言,你可以实现: 定义变量 使用字符串和算术运算符 使用控制流程和循环 生成格式化的输出 用法:awk [POSIX 或 GNU 风格选项] [--] '程序' 文件 ... POSIX 选项: GNU 长选项:(标准) -f 脚本文件 --file=脚本文件 -F fs --field-separator=fs -v var=val --assign=var=val 使用变量 $0 整行 $1 第一列字段 $2 第二列字段 $n 第 n 列字段 空格或者制表符是默认的列分隔符 可以通过-F 指定分隔符 ...

2020-12-05 · 1 分钟 · 479 字 · Niuhe

linux 101 Hackers 笔记

# 创建目录并进入 function mkdircd () { mkdir -p "$@" && eval cd "\"\$$#\""; } 查找文件 # 找到大于100M的文件 find / -type f -size +100M # 找到文件名中含有mail的文件/文件夹 find /etc -name "*mail*" # 找到修改时间在60天之前的文件 find . -mtime +60 # 找到修改时间在2天内的文件 find . -mtime -2 # 批量显示TS后缀且大于100M文件的详情 find . -type f -name '*.TS' -size +100M -exec ls -l {} \; # 批量删除TS后缀且大于100M的文件 find . -type f -name '*.TS' -size +100M -exec rm -f {} \; # 查找修改时间60天前的文件并打包 find /home/jsmith -type f -mtime +60 | xargs tar -cvf /tmp/`date '+%d%m%Y'_archive.tar` 输出重定向 # 标准输出重定向,只显示error信息 ./shell-script.sh > /dev/null # 标准错误信息重定向 ./shell-script.sh 2> /dev/null # 标准错误和输出都重定向 ./shell-script.sh > /dev/null 2>&1 # 将所有大写转化为小写 tr A-Z a-z < department.txt # 将所有小写转化为大写 tr a-z A-Z < employee.txt xargs 基本使用 # 删除log文件 find ~ -name '*.log' -print0 | xargs -0 rm -f find /etc -name "*.conf" | xargs ls -l cat url-list.txt | xargs wget -c find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz ls *.jpg | xargs -n1 -i cp {} /external-harddrive/directory 文件中截取列 # 以:分割,第一列 cut -d: -f 1 /etc/passwd # 以:分割,第1和第3列 cut -d: -f 1,3 /etc/passwd # 截取每行前边1-8个字符 cut -c 1-8 /etc/passwd 后台运行 nohup ./backup.sh & screen -S backup # 以特定间隔时间执行命令 watch df -h sed 基础 # thegeekstuff.txt # Instruction Guides 1. Linux Sysadmin, Linux Scripting etc. 2. Databases - Oracle, mySQL etc. 3. Security (Firewall, Network, Online Security etc) 4. Storage in Linux 5. Productivity (Too many technologies to explore, not much time available) # Additional FAQS 6. Windows- Sysadmin, reboot etc. # 将第一个Linux替换为Linux-Unix sed 's/Linux/Linux-Unix/' thegeekstuff.txt # 将所有Linux替换为Linux-Unix sed 's/Linux/Linux-Unix/g' thegeekstuff.txt # 将第2个出现的Linux替换为Linux-Unix sed 's/Linux/Linux-Unix/2' thegeekstuff.txt # 输出修改行并写入指定的output文件 sed -n 's/Linux/Linux-Unix/gpw output' thegeekstuff.txt # 行正则匹配到-,则从-到行尾的字符被替换为空 sed '/\-/s/\-.*//g' thegeekstuff.txt # 删除每行的后3个字符 sed 's/...$//' thegeekstuff.txt # 直接修改源文件,去除#开头的注释 sed -e 's/#.*//' thegeekstuff.txt # 直接修改源文件,去除#开头的注释并去除空行 sed -e 's/#.*//;/^$/d' thegeekstuff.txt # 去除html的箭头标签 sed -e 's/<[^>]*>//g' # 同时显示多个文件的日志 tail -f /var/log/syslog -f /var/log/auth.log # 修改命令行提示符号 export PS1="\u@\h \w> " # 修改系统时间 date {mmddhhmiyyyy.ss} # Jan 31st 2009, 10:19 p.m, 53 seconds date 013122192009.53 date +%Y%m%d -s "20090131" date +%T -s "22:19:53" date -s "01/31/2009 22:19:53" # 显示时间 date +"%d-%m-%Y" 01-01-2009 date +"%d/%m/%Y" # 01/01/2009 date +"%A,%B %d %Y" # Thursday,January 01 2009 压缩和解压 zip var-log-files.zip /var/log/* zip -r var-log-dir.zip /var/log/ unzip var-log.zip unzip -v var-log.zip unzip -l var-log.zip unzip -t var-log.zip zip -P mysecurepwd var-log-protected.zip /var/log/* unzip var-log-protected.zip tar [options] [tar-archive-name] [other-file-names] # 压缩文件 tar cvf /tmp/my_home_directory.tar /home/jsmith # 显示压缩文件目录 tar tvf /tmp/my_home_directory.tar # 提取压缩文件 tar xvf /tmp/my_home_directory.tar # 指定提取目录 tar xvfz /tmp/my_home_directory.tar.gz -C /home/ramesh # gzip压缩文件(*.tar.gz) tar cvfz /tmp/my_home_directory.tar.gz /home/jsmith tar xvfz /tmp/my_home_directory.tar.gz tar tvfz /tmp/my_home_directory.tar.gz # bzip压缩文件(*.tar.bz2) tar cvfj /tmp/my_home_directory.tar.bz2 /home/jsmith tar xvfj /tmp/my_home_directory.tar.bz2 tar tvfj /tmp/my_home_directory.tar.bz2 命令行历史 # CTRL+r 查找匹配历史 # CTRL+p 上一条命令 history -c # 清除历史 # 忽略重复命令 export HISTCONTROL=ignoredups # 忽略以空格开头的命令 export HISTCONTROL=ignorespace # 不记录历史 export HISTSIZE=0 系统管理 # 创建swap分区 dd if=/dev/zero of=/home/swap-fs bs=1M count=512 ls -l /home/swap-fs mkswap /home/swap-fs swapon /home/swap-fs # edit in /etc/fstab /home/swap-fs swap swap defaults 0 0 # 生成ssh公钥 ssh-keygen ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host # 定时任务管理 crontab -e {minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script} # run at 00:01am 1 0 * * * /root/bin/backup.sh # run at weekday 11:59pm 59 11 * * 1,2,3,4,5 /root/bin/backup.sh 59 11 * * 1-5 /root/bin/backup.sh # run every 5 minute */5 * * * * /root/bin/check-status.sh # run at 13:10pm on lst of every month 10 13 1 * * /root/bin/full-backup.sh # run at 11:00pm every weekday 0 23 * * 1-5 /root/bin/incremental-backup.sh # 同步文件 rsync options source destination # sync two directory in a local computer # -z enable compression # -v verbose # -r recursive # -a archive mode:will preserve symbolic link/permission/timestamp/owner/group rsync -zvr /var/opt/installation/inventory/ /root/temp # sync one file rsync -v /var/lib/rpm/Pubkeys /root/temp/ # sync to remote machine rsync -avz /root/temp/ thegeekstuff@192.168.200.10:/home/thegeekstuff/temp/ # sync from remote to local rsync -avz thegeekstuff@192.168.200.10:/var/lib/rpm /root/temp # netcat命令nc # 从server1拷贝文件到server2 # 1. 在server2(102.168.200.27)上监听 nc -l 2222 > 1234.txt # 2. 在server1上开启传输 nc -w 1 102.168.200.27 2222 < abc.txt # 网络拷贝硬盘 # 1. server2(102.168.200.27)监听 nc -l -p 2222 | dd of=/dev/sda # 2. server1执行传输 dd if=/dev/sda | nc 102.168.200.27 2222 # nc端口扫描 # 扫描20-30端口 nc -v -w 1 192.168.200.29 -z 20-30 系统性能监控 ps axl ps aux ps axuf ps U niuhe netstat -tap netstat --route # 路由表 sar lsof

2020-12-05 · 3 分钟 · 1346 字 · Niuhe

vscode 快捷键和插件记录

快捷键 CTRL+B 打开/收起侧边栏目 CTRL+` 打开内置终端 CTRL+, 打开设置 CTRL+p 快速搜索并打开文件 CTRL+TAB 在已经打开的标签页中跳转 CTRL+\ 将标签页移动到右侧分割栏 CTRL+w 关闭标签页 CTRL+f 查找内容 CTRL+h 查找并替换 CTRL+SHIFT+f 全局搜索 CTRL+SHIFT+p 命令面板 CTRL+/ 注释/解除注释 CTRL+HOME/END 跳转到文件首/尾 CTRL+c/v 复制或剪切当前光标行/在当前光标行或下一行粘贴 CTRL+SHIFT+箭头上下箭头 多个光标用于列编辑 ALT+CLICK 获取多个编辑的光标 ...

2020-12-05 · 2 分钟 · 924 字 · Niuhe

Openstack命令行基础

不同命令的功能有重复和交集 Openstack篇 Openstack每个组件都有其命令,openstack社区为了方便使用,将所有组件的命令进行了统一,以openstack开头 # 查看所有openstack服务 openstack service list # 查看openstack服务状态 openstack-service status # 重启本节点所有openstack服务 openstack-service restart # openstack服务URL列表查询 # endpoint表示一个服务在哪可被访问的URL和端口号列表 openstack endpoint list # 查询domain,domain是一个keystone验证实体 openstack domain list # 查看nova服务列表 openstack compute service list # 查看网络服务列表 openstack network agent list # ======================================================= # 项目(租户)列表查询 openstack project list # 查看租户详情 openstack project show <project_id/name> # 创建租户 openstack project create --description 'Admin Project' <租户名> # 删除租户 openstack project delete <租户id/name> # 禁用启用租户 openstack project set <租户id/name> --disable/enable # 更新租户名称 openstack project set <租户id/name> --name <new name> # ======================================================== # 查看某一个项目下所有用户user openstack user list --project=<project_id/name> # 查看所有用户 openstack user list # 查看用户详情 openstack user show <user_name/id> # 创建用户 openstack user create --domain <域名> --project <项目/租户名> --password <密码> <用户名> # 删除用户 openstack user delete <用户名> # 禁用启用某一个用户 openstack user set <user_name/id> --disable/enable # 更新用户名称 openstack user set <user_name/id> --name <new name> # 查询某一用户与项目、角色的关系 openstack role assignment list --user=用户名 # ======================================================= # 角色查询 # 一个角色包括一组权利和特权,角色访问控制提供预定义的用户可操作列表,如开启或停止虚机,重置密码等。在身份验证服务和计算服务中均被支持。 openstack role list # 角色详情查询 opensatck role show <role_name/id> # 创建角色 openstack role create <role_name> # 分配角色,将项目和用户加入到角色中 openstack role add --user <用户名> --project <项目名> <角色名> # 删除角色 openstack role remove --user <用户名> --project <项目名> <角色名> # ====================================================== # 列出所有的镜像 openstack image list # 查看某一个镜像信息 openstack image show <image_id> # 设置镜像标签 openstack image set --tag <标签名> <image_name/id> # 创建镜像 # 格式化类型包括raw、qcow2、vmdk等 openstack image create <镜像名> --file <镜像文件名> --disk-format <格式化类型> --container-format bare --public # openstack image create “test1” --file cirros-0.5.1-x86_64-disk.img --disk-format qcow2 --container-format bare --public # 查看安全组信息 openstack group list # 查看flavor类型 openstack flavor list # 查询网络信息 openstack network list # 查看端口信息(虚拟网络) openstack port list # 创建虚拟机 openstack server create --image <image_id/name> --flavor <flavor_id/name> --nic net-id=<net_id> <instance_name> # 创建虚拟机帮助 openstack server create --help # ================================================== # 查看openstack环境主机列表 openstack host list # 查看某个host主机资源情况 openstack host show <host_name> # 查看虚拟机列表 openstack server list # 查看虚拟机详情 openstack server show <instance_id> # 虚拟机暂停 openstack server pause <instance_id> # 虚拟机从暂停中恢复 openstack server unpause <instance_id> # 虚拟机重启 openstack server reboot <instance_id> # 虚拟机删除 openstack server delete <instance_id> Nova篇 # 查看openstack版本 nova-manage version # 查看命令帮助信息 nova help <command> # 返回nova服务所在的host信息 # 在电子通信领域,host和node的区别在于,host是向外提供某种服务,而node只需要是连接到网络的设备 # 运行有nova服务的主机被认为是host nova host-list # 查看host具体资源信息 nova host-describe <host_name> # 查看nova服务和状态 nova service-list # ======================================= # 查看计算节点 nova hypervisor-list # 查看计算节点详情 nova hypervisor-show <hypervisor ID> # 查看计算节点上的虚拟机 nova hypervisor-servers <hypervisor ID> # ====================================== # 列出所有flavor(模板) nova flavor-list # 创建flavor,模板ID建议为auto nova flavor-create --is-public true <模板名称> <模板ID> <内存(MB)> <磁盘(GB)> <VCPUS> # 显示flavro详情 nova flavor-show <模板ID> # 删除flavor nova flavor-delet <模板ID> # ======================================= # 查看虚拟机列表 nova list nova list --all-te # 查看虚拟机详情 nova show <instance_id> # 查看虚拟机控制台日志 nova console-log <instance_id> # 查看密钥对列表 nova keypair-list # 查看镜像列表 nova image-list # 查看浮动ip列表 nova floating-ip-list # 查看安全组列表 nova secgroup-list # ===================================== # 查看浮动ip列表 nova-manage floating list # 数据库同步 nova-manage db sync nova-manage api_db sync nova-manage placement sync # 查看数据库版本 nova-manage db version # nova组件更新检查 nova-status upgrade check # ==================================== nova suspend <instance_id> nova resume <instance_id> nova start <instance_id> nova stop <instance_id> nova delete <instance_id> nova reboot <instance_id> # 硬重启 nova reboot --hard <instance_id> # 进入救援模式 nova rescue <instance_id> # 使用指定镜像进入救援模式 nova rescue --image <image_id> <instance_id> # 重启虚拟机,由救援模式进入正常模式 nova unrescue <instance_id> # 重置虚拟机状态 nova reset-state <instance_id> # 指定节点热迁移 nova live-migration <instance_id> <compute_node_id> # 调整虚拟机资源 nova resize <instance_id> <flavor_id> --poll # 确认调整虚拟机资源 nova resize-confirm <instance_id> # 资源调整失败回滚 nova resize-revert <instance_id> # 通过快照创建一个镜像 nova image-create <instance_id> <image_name> # =================================== # 从镜像创建虚拟机 nova boot --image cirros --flavor 1 --nic net-name=net1 vm1 # 从卷(块设备)创建虚拟机 # 1. 从镜像生成volumn cinder create --image-id <image_id> --name <volume_name> <size_in_gb> # 2. 从volumn创建虚拟机 nova boot --flavor <flavor_id> source=volumn,,id=卷ID,dest=volume,shutdown=preserve,bootindex=0 虚拟机名称 # ================================== # 挂载云硬盘 nova volume-attach <instance_id> <volume_name> /dev/sdb # 卸载云硬盘 nova volume-detach <instance_id> <volume_name> Neutron篇 # 列出当前租户网络 neutron net-list # 列出所有租户网络 neutron net-list --all-te # 查看网络详情 neutron net-show <net_id> # 删除一个网络 neutron net-delete <net_id> # 查看所有agent neutron agent-list # 查看所有租户拥有的port # port是虚拟网口,是路由器和虚拟机挂接网络的着附点 neutron port-list # 查看port详情 neutron port-show <port_id> # 查看安全组 neutron security-group-rule-list Glance篇 # 列出全部镜像 glance image-list # 查看image具体信息 glance show <image ID> # 上传镜像 glance image-create --visibility public --container-format docker/bare --disk-format raw/qcow2 --name xxx --file /root/xxx --progress glance image-create --name "CentOS7.0" --disk-format qcow2 --container-format bare --progress </opt/images/centos_7-x86_64_xiandian.qcow2 Cinder篇 # 显示存储列表 cinder list # 显示存储卷类型列表 cinder type-list # 创建存储卷 cinder create --display-name VOLNAME SIZE(SIZE的单位为GB) Ceilmeter篇 # 查看监控资源 ceilometer meter-list #查看告警列表 ceilometer alarm-list # 删除一个告警 ceilometer alarm-delete -a ALARM_ID # 获取某一个告警信息 ceilometer alarm-state-get ALARM_ID 服务状态 systemctl list-units | grep openstack systemctl status httpd.service # 查看Apache的http服务日志 cd /etc/httpd/logs tail -f <日志文件> 参考 Openstack常用命令 ...

2020-10-23 · 5 分钟 · 2299 字 · Niuhe

tcpdump的基本使用【译】

Tcpdump是一个linux命令行的抓包工具,可以抓取TCP/IP和其他数据包,如UDP,ARP,ICMP,可以使用过滤器过滤出想要的包。 抓取特定接口上的包 当使用tcpdump不加任何参数,将分析所有接口上的数据包。 sudo tcpdump 可以使用-i选项指定特定接口 可以使用-c选项限制数据包的个数 sudo tcpdump -i wlp2s0 -c 10 抓取特定主机的数据包 可以使用-host选项指定和特定主机相关的数据包 ...

2020-10-19 · 3 分钟 · 1360 字 · Niuhe

Linux性能测试

简介 Linux上对系统进行性能检测的工具非常多,本文介绍一些常用工具的使用 性能观测工具 ▪ 首先学习的Basic Tool有如下: uptime、top(htop)、mpstat、isstat、vmstat、free、ping、nicstat、dstat。 ▪ 高级的命令如下: sar、netstat、pidstat、strace、tcpdump、blktrace、iotop、slabtop、sysctl、/proc。 ...

2020-10-17 · 13 分钟 · 6027 字 · Niuhe

Ubuntu20_04上使用ibus中文输入法

Ubuntn 上一直以来对中文输入法的支持都不是很完善,在升级到 20.04 版本之后,系统默认自带的是 ibus 输入法,刚刚上手使用之后不是很好用。在尝试安装 fcitx 和搜狗输入法之后,因为搜狗输入法和 Pycharm 等 IDE 冲突,会导致软件卡死,而且资源占用较高。还是切换回了 ibus 输入法。 在简单调教之后,发现 ibus 还是很好用的。 打开 Ibus 首选项 ...

2020-10-11 · 1 分钟 · 277 字 · Niuhe