Skip to content

Glaumar's Blog

  • Search

Glaumar's Blog

  • Search

图片来源:https://www.pixiv.net/artworks/101077465 Debain,Ubuntu,Deepin等使用deb包的发行版 已安装的包 根据文件名(命令名)查找包名 根据包名查看其所包含文件 未安装的包 要查找未安装的包需要额外工具 apt-file (使用 sudo apt install apt-file 安装),使用前可以先更新本地缓存 sudo apt update 根据文件名(命令名)查找包名 根据包名查看其所包含文件 RHEL,Centos,Fedora等使用rpm包的发行版 根据文件名(命令名)查找包名 或 根据包名查看其所包含文件 要查询未安装的包所包含的文件需要额外工具 repoquery (使用 sudo yum install yum-utils 或 sudo dnf install dnf-utils 安装) Arch,Manjaro等使用 pacman 的发行版 根据文件名(命令名)查找包名 或 根据包名查看其所包含文件 或

Linux

Linux查询文件所属包和查看包所包含文件

2 comments
  • linux基础知识
Updated June 29, 2025

图片来源:https://www.pixiv.net/artworks/100039624 Fork bomb 将文件内容写入剪贴板 打印剪贴板内容 解锁被pam锁定无法登录的用户 创建大文件,修改bs和count参数可以调整大小,合理的bs大小能提高执行效率,下面的命令在我的SSD上创建文件仅需0.35秒 Vim编辑后发现因权限不足无法保存,可以在Vim内将未保存的内容导出同时再使用sudo权限强行写入原文件,然后使用“:e!”重新加载当前文件 查看各个系统目录含义 查看ASCII码表 备份文件 获取当前时间戳 将时间戳转换为日期 创建临时文件、文件夹 URL解码 二进制处理 查看二进制文件 截取二进制文件,利用dd命令,skip参数跳过前n个字节,count参数控制读取长度 将十六进制文本转换为二进制文件 字节序反转 网络 显示IP,有多个网卡的话可能会显示多个,使用空格分割 SSH远程执行命令 SSH远程执行本地shell脚本 如果要远程后台执行一个长时间的任务,并且立刻返回,仅仅“nohup command &”是不行的,还需要把输入输出重定向 设置静态IP地址 设置默认路由 网速监控 Core Dump 查看 coredump 文件大小限制 查看 coredump 文件生成位置和生成格式 临时修改 coredump 文件生成位置和生成格式 不生成 coredump 文件,修改配置文件 /etc/sysctl.d/50-coredump.conf 。 若要使修改后配置立即生效,执行 列出所有生成的 coredump 文件(不包括 gdb 手动生成的) 查看 coredump 文件信息 使用 gdb 调试 GDB 内手动生成 coredump 进程 通过程序名获取进程 PID 查看运行中进程的环境变量 启动 查看系统开机启动耗时 查看开机各个进程启动耗时 查看启动日志 参考:

Memo

一些Shell命令记录

  • linux基础知识
  • shell
Updated June 29, 2025

图片来源:https://www.pixiv.net/artworks/35809597 标准方式 或者 GNU C属性 参考:

Programming

C/C++取消字节对齐

  • c
  • cpp
Updated June 29, 2025

图片来源:《魔法使之夜》游戏截图 无互联网指使用VSCode的Windows和Linux未连接互联网,但至少能通过某些途径把下载好的安装包传到Windows里安装 安装官方Git客户端 访问https://git-scm.com/download/windows下载git客户端并安装,安装这个主要是偷懒,要用的是“Git Bash”和SSH相关工具, 安装VSCode Windows客户端安装 访问https://code.visualstudio.com/Download下载VSCode客户端并安装 安装Remote-SSH插件 访问https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh, 界面右边可以下载插件安装包 进入VSCode的插件界面(左边工具栏第5个),直接用鼠标把插件安装包拖进去安装,或者点击“…”,选择“Install from VSIX…”安装 其他插件 大部分插件到https://marketplace.visualstudio.com/上手动下载安装即可,一些插件的windows端和linux端程序有一定区别(比如微软官方的C/C++插件),请根据需要下载不同版本 Linux服务端安装 在有互联网的情况下,客户端第一次连接会自动给Linux下载服务端程序,但没有互联网的情况下,需要手动完成 获取服务端安装包 首先需要尝试第一次连接,虽然必定会失败,但可以从连接报错信息看到下载服务端程序所需要的“commit id” 按快捷键“Ctrl + Shift + P ”, 搜索“connect”,选择“Remote-SSH:Connect Current Window to Host…” 添加后,再重复一遍操作,按快捷键“Ctrl + Shift + P ”, 搜索“connect”,选择“Remote-SSH:Connect Current Window to Host…” 此时会多一个刚刚添加服务器,选择之后按提示操作即可 第一次连接一定会失败,可以从连接报错信息看到之后所需要的“commit id”, 同时在Linux端生成的用户根目录下生成“.vscode-server”文件夹,“.vscode-server/bin/”下会有一个以“commit id”值为文件名的文件夹,如果没有生成这个文件夹,请把上面的连接步骤重复多试几次 根据刚刚的报错信息,我使用的是stable版,用报错信息里的“commit id”替换下面连接里的“$COMMIT_ID”,直接访问下载服务端程序(vscode-server-linux-x64.tar.gz) https://update.code.visualstudio.com/commit:$COMMIT_ID/server-linux-x64/stable 如果是insider版,把url最后的stable换成insider https://update.code.visualstudio.com/commit:$COMMIT_ID/server-linux-x64/insider 安装服务端程序 打开之前安装git时附带的“Git Bash” 把刚刚下载的服务端程序传到linux上 ssh连接到linux上 在linux上执行 完成后,VSCode再次连接就能连上了 配置使用SSH密钥自动认证 使用密码连接的话,VSCode每次Reload或者打开新窗口都要重新输入密码,比较麻烦,可使用密钥自动认证 打开之前安装git时附带的“Git Bash” 生成密钥 把公钥传到linux服务器 完成后本机所有对该服务器的ssh连接应该都能自动认证 参考:

Programming

Windows下无互联网(离线)配置VSCode远程连接Linux

  • ssh
  • vscode
  • 离线安装
Updated June 29, 2025

图片来源:https://www.pixiv.net/artworks/92806241 Code Syntax Block插件使用的PrismJS当前支持297种语言,但插件默认只显示了一部分,要使用其他语言的语法高亮需要手动修改 方案一:直接修改插件代码 登录WordPress后台界面,点击左边“插件 -> 插件文件编辑器” 进入插件文件编辑器后,右边选择“Code Syntax Block”插件,然后点击“prism-language.php”文件 打开“prism-language.php”文件后找到“mkaz_code_syntax_block_get_supported_languages”函数,修改函数里的“languages”数组,比如下图添加“awk”“cmake”和“csv”的支持,修改完成后点击更新文件即可。所有支持的语言查看https://prismjs.com/#supported-languages 方案二:使用代码执行插件加载额外代码(推荐) 首先安装一个用于给WordPress加载额外代码的插件,比如“Code Snippets” 要添加的PHP代码,数组内容可自己根据需要修改,PrismJS支持的语言查看https://prismjs.com/#supported-languages 安装并启用“Code Snippets”插件后,左边会多一个“Snippets”选项,点击“Snippets -> Add New”,进入编辑代码编辑界面。代码标题可以随便起,粘贴上面的PHP代码,并选择“Only run in administration area”, 然后滚动到页面最下方点击“Save Changes and Activate” 参考:

Other

WordPress – Code Syntax Blockc插件添加额外语言支持

  • wordpress
Updated June 29, 2025

图片来源:https://www.pixiv.net/artworks/82570722 Lua官方解释器完全使用ANSI C编写,并且提供了C API,使用C/C++和Lua交互相当方便 Lua虚拟栈 C和Lua的交互基于一个栈,这个栈的每个位置都有两个索引值,这里只需要记住这个栈的栈顶索引始终为“-1”,栈底索引始终为“1”即可 基本环境加载 后续的代码示例均基于“test.lua”“main.c”这两个文件 Lua C API的函数大多第一个参数都为“lua_State *L”,即“main.c”中使用“luaL_newstate()”创建的lua住线程,后续不再说明 参考编译命令 C获取Lua变量 Lua的C API提供 “lua_getglobal” 来将指定全局变量压入栈,然后提供一系列“lua_toxxx”函数来将栈中的变量转换为C类型变量,相关函数在使用前 获取布尔值、数值、字符串 布尔值 由于C语言里没有对应布尔类型,会将布尔类型值转换为整形的“1”和“0”。使用“lua_typename”函数可以将表示lua类型的整数转换为对应C字符串 数值 lua脚本中不显式区分整数和浮点数,所以“lua_getglobal”返回的类型都是“LUA_TNUMBER” ,但转换为C变量时需要区分,分别使用“lua_tointeger”和“lua_tonumber” 字符串 获取字符串差不多,“lua_tostring”会在末尾补 '\0' 但如果字符串本身内容也包含 '\0' 的话无法判断真实长度,此时可以使用“lua_tolstring”传递第三个参数保存字符串长度 分别使用“printf”和“fwrite”打印获取到的字符串 要在命令行确认是否有’\0’输出可以将输出通过管道传递给‘cat -v’命令,’\0’会以“^@”的形式显示 获取表中的变量 通过变量名获取 获取表中的变量,需要先将表压入栈,然后把这个表在栈中的位置和要获取的变量名传给“lua_getfield”,“lua_getfield”会将变量压入栈 通过key获取 有时候表中成员没有变量名,比如数组和字典,此时可以先将表压入栈,然后通过“lua_pushxxx”系列函数(或者其他方式)将key压入栈,之后调用“lua_gettable”将table[key]压入栈 遍历数组 操作数组前需要先将数组,压入栈,获取数组长度使用“luaL_len”,该函数会直接返回数组长度。访问数组中的单个值使用“lua_geti”传入数组在栈中的索引和要访问的数组下标 C调用Lua函数 在C中调用Lua函数需要先将函数压入栈,然后依次将函数参数入栈,调用“lua_pcall”设置函数参数数量、返回值数量、错误信息位置即可,函数返回值会依次压入栈中 调用全局函数 调用对象的成员函数 其实和调用全局函数没太大区别,就是需要先获取对象再获取对象的函数,另外成员函数定义时使用“:”语法省略了self参数,但C调用的时候不能省略

Programming

C调用Lua

  • c
  • lua
Updated June 29, 2025

图片来源:https://www.pixiv.net/artworks/95096478 X Window剪贴板 X提供了3个剪贴板,分别是“Primery selection” 、“Secondar selection”和 “Clipboard”,它们使用不同的区域存储数据,其中“Secondar selection”现在几乎没有应用使用。 Clipboard 这个就是平常熟悉的剪贴板,和windows下一样 Primery selection “Primery selection”不需要使用额外的快捷键,鼠标选中自动复制,按下鼠标滚轮粘贴 Secondar selection 一般来说用不上,要使用的话可以借助“xclip”来读取和写入数据 写入数据到“Secondar selection” 读取“Secondar selection”存储的数据并输出 配置 罗技官方的G HUB软件只支持Windows和MacOS, Linux下可以使用piper来自定义G502的按键 打开piper ,按需设置各个按键即可,非常无脑。 通用的复制粘贴 这里我选择把“G4”和“G5”绑定到粘贴(Shift + Insert)和复制(Ctrl + Insert),不使用“Ctrl + V”和“Ctrl + C”是因为Linux的模拟终端软件为了防止和SHELL中的快捷键冲突通常会把复制和粘贴设置成“Ctrl + Shift + C”“Ctrl + Shift + V”。如果你还使用了GoldenDict,可以把GoldenDict默认的“Ctrl + C + C”弹窗翻译换成 “Ctrl + Ins + Ins”,选中单词或句子后,双击“G5”即可翻译,体验非常棒。 访问剪贴板历史 这个需要配合剪贴板管理器,比如KDE默认的剪贴板管理器,可以将访问剪贴板历史的操作绑定到快捷键 然后在piper中把G502的滚轮左/右点击操作绑定到“Ctrl + Alt + Shift + N”“Ctrl + Alt + Shift +P”,这样通过“G4”“G5”和滚轮左/右点击操作配合就可以实现多值的复制粘贴操作

Linux

罗技G502鼠标使用Linux下的剪贴板

  • archlinux
  • 电子设备
Updated June 29, 2025

图片来源:https://www.pixiv.net/artworks/82352687 要抓取一些由于众所周知的原因无法直接使用的软件的报文或者要抓取软件在不同国家/城市下报文时,可以配置透明代理,在软件客户端不感知代理环境的情况下抓取尽量真实的流量 配置透明代理 以Ubuntu为例,采用v2ray + v2rayA内置透明代理。这个方案配置上比较简单,但日常使用体验上个人感觉比v2ray + qv2ray + cgproxy的方案略差一些 安装v2ray 由于Ubuntu和v2ray官方都没有提供软件源,这里选择第三方的铜豌豆Linux软件源 添加软件源 安装v2ray 安装v2rayA 添加公钥 添加 v2rayA 软件源 安装v2rayA 配置 启动v2rayA并设置开机自启 如果不想开机自启,可以在需要用的时候手动启动 访问http://127.0.0.1:2017/,第一次访问设置帐号密码 点击左上“导入”按钮填写节点链接地址或者订阅地址,点击确认。至于如何获取节点链接地址或者订阅地址,请自己想办法 点击右上角设置,配置参考如下图,也可以根据需要自行修改,修改完成点击“保存并应用”(第四项转发DNS请求有助于让流量更真实,但如果代理节点在国外可能会影响国内网站的访问速度,甚至可能出现无法访问的情况,请根据需要修改) 选择一个节点连接,然后点击左上角启动即可。由于我导入的是订阅地址,会生成一订阅名相关的标签,节点在该标签里,如果导入的是节点地址,节点会出现在“Server”标签里阅地址 设置完成后,访问http://www.ip111.cn/测试一下 抓包 Wireshark Linux安装wireshark之后可能会出现找不到网卡无法抓包的情况,解决方案参考这个:https://blog.geekgo.tech/linux/linux%e4%b8%8bwireshark%e6%97%a0%e6%b3%95%e6%8a%93%e5%8c%85%e9%97%ae%e9%a2%98/ 一般情况下不建议直接将透明代理和要抓包的软件安装在同一设备上,因为: 建议的做法是在配置了透明代理的LinuxPC上开启无线热点,将要抓包的软件安装在其他设备上并连接热点,使用wireshark直接抓取入口无线网卡的报文即可(无线网卡名称一般以“wl”开头,如“wlan0”) 无线网卡 如果你是在Linux PC上配置的透明代理环境,并且恰巧你的主版没有内置无线网卡,那就需要一张USB无线网卡,但市面上很多宣传支持Linux的USB无线网卡实际只是能连接WIFI,并不支持AP模式开热点。目前我测试过的有rt5370芯片和 rt3070芯片的无线网卡linux上都是可以开热点的,也不用折腾第三方驱动,价格在30-40软妹币之间,抓包分析用足够了。 查看无线网卡是否支持AP模式 支持AP模式的话,“Supported interface modes”下会有一行“* AP” 参考:

Linux

Linux配置透明代理抓取报文(v2ray + v2rayA)

  • v2ray
  • wiredhark
  • 抓包
Updated June 29, 2025

图片来源:https://www.pixiv.net/artworks/99335528 SUID SGID SBIT 全称 set UID set GID Sticky Bit 解释 s标志出现在文件拥有者的x权限位置上 :-rwsr-xr-x s标志出现在文件群组的x权限位置:-rwxr-sr-x t标志出现在其他人的x权限位置:drwxr-sr-t 添加命令 chmod u+s file chmod g+s file_or_dir chmod o+t dir 有效对象 二进制可执行文件 二进制可执行文件,文件夹 文件夹 效果 文件执行者在该程序运行期间将获得程序拥有者的权限 对于文件:文件执行者在该程序运行期间将获得程序所在群组的权限; 对于文件夹:使用者在该文件夹下时,有效群组将变成该文件夹的群组 当使用者在该文件夹下创建文件或文件夹时,仅有自己与 root 才有权力删除该文件 这三个权限都是建立在可执行权限之上,当可执行标志位为空时设置,如果设置了SUID、SGID和SBIT,会显示为大写:rwSr-Sr-T 参考: 《鸟哥的Linux私房菜——基础学习篇(第四版)》

Linux

SUID、SGID和SBIT

2 comments
  • linux基础知识

图片来源:《空之境界》截图 添加archlinuxcn主仓库和密钥 添加archlinuxcn主仓库到“/etc/pacman.conf”,“Server”后面的连接也可以从https://github.com/archlinuxcn/mirrorlist-repo里选一个 更新现有仓库 导入密钥 可选操作:使用archlinuxcn镜像列表 安装archlinuxcn镜像列表,这个包只有一个文件 “/etc/pacman.d/archlinuxcn-mirrorlist”,根据需要自行修改该文件,移除要使用的源最前面的 # 即可 修改“/etc/pacman.conf”,把之前在“/etc/pacman.conf”添加的内容删掉,改成这样 参考:

Linux

添加archlinuxcn仓库

  • archlinux
Updated June 29, 2025

Posts navigation

  • Newer posts Newer posts
    • 1
    • 2
    • 3

© 2025 Glaumar's Blog – All rights reserved

Powered by WP – Designed with the Customizr theme