0%

SYNOPSIS

    cp [OPTION]... [-T] SOURCE DEST
    cp [OPTION]... SOURCE... DIRECTORY
    cp [OPTION]... -t DIRECTORY SOURCE...

其实 cp 的选项比我想象中的要多很多。

其他选项:

  • 创建硬链接(-l)而不是拷贝。
  • -L 则会先解引用符号链接。
  • -n 不会覆盖旧文件
  • -a 先归档再拷贝,也就是保留所有属性。
  • -r 递归拷贝(文件夹)。
  • -u 只拷贝时间上更新的文件

样例

Windows 下是 %userprofile%\.ssh\config。Linux 下自己对应一下。

  • 含有 ForwardAgent 选项表示启用代理转发,相当于在连接它时自动添加了参数 -A
  • 含有 ProxyJump 表示先通过跳板机再连接到此主机,相当于在连接它时自动添加了参数 -J

样例:

Host github
  HostName github.com
  IdentityFile ~/.ssh/id_rsa

Host jump
  HostName <能访问的 IP>
  User <用户>
  Port <能访问的端口>
  IdentityFile ~/.ssh/id_rsa

Host jump_docker
  ProxyJump jump
  HostName localhost
  User root
  Port 22275

其中 jump_docker 在局域网中,我们必须通过跳板 jump 来访问。这里 jump_docker 没有写 IdentityFile,如果默认的密钥文件(比如 ~/.ssh/id_rsa 等)匹配不了,那么就只能通过密码登陆。

常用

功能子项目命令其他
CPU-htop
GPU-nvidia-smi还可以用 gpustat/ nvitop
磁盘-iostat新版本的 htop 同样可以监控磁盘 I/O(在 3.2.2 版本上测试可以,老版本 2.2.0 上实测不行)
网络-
端口sudo netstat -pnltu还可以用 sudo ss -nltup,快得多(不加 sudo 可能会少显示一些程序的端口号、名字等)
不同连接的网速sudo iftop
具体接口的不同连接的网速sudo tcptrack -i eno1
具体端口的网络活动tcpdump -i any port 53210

注意 docker 容器内的端口号和容器外的端口号是不同的。

2025/4/14 推荐 btop,不需要 root 权限就能查看当前网速btop 也还有其他的功能,看起来想和 htop 争。

2025/4/18 推荐 安装 sysstat 获取 CPU/ 磁盘 / 网络统计日志,防患于未然。

GPU

nvidia-smi 就不说了,N 家自己的工具。默认的会读很多信息,如果只需要显存信息,可以用 nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv,这样输出的速度也更快,差不多 87 ms。

由于是自己的电脑充当代理,所以需要用 -R 选项。

ssh -N -n -R 0.0.0.0:11625:127.0.0.1:12341 服务器

这是将远程的一个端口连到本地的端口。-N 表示不要执行命令,仅仅转发端口。-n 表示将 stdin 重定向到 /dev/null。

但是如果想要把这个代理用到 docker 构建中,又会有一点问题。因为 docker 容器本身有不同的网段,不能写 localhost,而是要写 host 的 ip。

sshd_config 里要打开 AllowTcpForwarding 选项,否则 -R 远程端口转发会失败。

默认转发到远程主机上的端口绑定的是 127.0.0.1,如要绑定 0.0.0.0 需要打开 sshd_config 里的 GatewayPorts 选项。这个选项如果由于权限没法打开也有办法,可配合 ssh -L 将端口绑定到 0.0.0.0。

消除烦人的错误提示

如果是自动保存,则会有烦人的错误提示。即便是打开勿扰模式也会提示错误消息。

需要在设置中关闭 LaTeX 相关的消息。

无法编译中文

"latex-workshop.latex.tools" 中改一个参数。

每次保存之后不自动使用中文:在 VS Code 的设置中加入这一行并重启。

ctrl + e 不能传进 shell

在自定义的快捷键配置中给 ctrl+e 删掉默认的 command。

// 将键绑定放在此文件中以覆盖默认值
[
    { "key": "ctrl+e", "command": "-workbench.action.quickOpen" },
]

终端字体间距过宽

有时候恢复终端就会出现这种情况(比如显示屏分辨率变化)。暂且尝试的方法是显式设置终端字体(而不是把终端字体留空,让其隐式使用编辑器字体)。感觉还是没有用!

https://github.com/microsoft/vscode/issues/120004

terminal.integrated.letterSpacing 改成别的值再改回 0(默认值)就能恢复。

“终端字体间距过宽”的复现:

add_custom_command / add_custom_target 不同,这个是在配置时就运行,但是一定要注意给对工作路径,否则运行结果出乎意料(或者以为没有运行)。

示例:

execute_process(COMMAND ./utils/pre-commit-cmake.sh
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)