md文档中图片格式调整
<div style="text-align:center;">
<img src="图片链接" alt="描述文字" style="width:50%; height:auto;">
</div>
github信息查看
https://api.github.com/users/名字
命令行编译
假设项目结构如下:
project_folder/
src/
file1.c
file2.c
include/
header.h
编译命令
gcc -c -I../include file1.c -o file1.o
gcc -c -I../include file2.c -o file2.o
gcc file1.o file2.o -o my_executable
对拍
https://www.cnblogs.com/EdisonBa/p/13509379.html
一段出题代码
#include<bits/stdc++.h>
using namespace std;
const int N=100000;
int main()
{
srand(time(NULL));
int T=10;
for(int i=1;i<=10;i++){
string output_file=to_string(i)+".in";
freopen(output_file.c_str(),"w",stdout);
int n,m;
// if(i<=3)
// n=10,m=((rand()<<15)+rand())%(n*n)+1;
n=1000,m=((rand()<<15)+rand())%(5*n)+1;
// else n=100000,m=((rand()<<15)+rand())%N+1;
printf("%d %d\n",n,m);
for(int i=0;i<m;i++){
int x=((rand()<<15)+rand())%n+1;
int y=((rand()<<15)+rand())%n+1;
printf("%d %d",x,y);
if(i==m-1);
else printf("\n");
}
}
return 0;
}
linux命令
- 用户
adduser -M -d /dev/null -s /sbin/nologin testuser
adduser:这是添加新用户的命令。
-M:不为用户创建主目录。这意味着在添加用户时,不会在默认的 /home 目录下创建 testuser 的主目录。
-d /dev/null:指定用户的主目录为 /dev/null。由于 /dev/null 是一个特殊的设备文件,可以丢弃所有写入它的数据,这意味着 testuser 没有实际的主目录。
-s /sbin/nologin:指定用户的登录 shell 为 /sbin/nologin。这会阻止用户通过常规方式登录到系统。尝试登录时,系统会显示一条信息,表明登录被禁止。
testuser:这是要添加的用户的用户名。
adduser -d /home/user01 -m user01
-m:创建用户的主目录。如果指定的主目录不存在,-m 选项将创建它。
tail -n 1 /etc/passwd
passwd -l user01 命令用于锁定用户账号 user01。以下是该命令的详细解释:
-l:表示锁定用户账号(lock)。 user01:!$6$abcdefgh$wqe7r8yK3QH.DRTfEr1:19000:0:99999:7::: /etc/passwd最后一行会多一个感叹号
passwd -u user01 # 解除锁定
usermod -l user02 user01 # 修改用户名,更改用户名不会自动更改用户的主目录名称。若要同时更改用户的主目录名称,需要使用 -d 选项
usermod -l user02 -d /home/user02 -m user01
groupadd student
# 组名:密码:组ID:组成员
# developers:x:1001:alice,bob,charlie
tail -n 1 /etc/group
useradd -g student -G developers,wheel user02
# 这个命令会创建一个名为 user02 的新用户,默认组(初始组)为 student,并且还属于 developers 和 wheel 这两个附加组。
gpasswd student
gpasswd -d user02 student
usermod -a -G developers,admins user02 # 将现有用户添加到一个或多个附加组中,并且保留用户之前所属的组。如果不使用 -a 选项,用户将被从原有的附加组中删除,只保留在新指定的附加组中。
/etc/passwd
用户名:密码:UID:GID:用户信息:主目录:登录 shell
user01:x:1001:1001::/home/user01:/bin/bash
/etc/shadow
用户名:密码:上次更改日期:最小间隔天数:最大间隔天数:警告天数:禁用天数:账号过期日期:保留字段
user01:$6$abcdefg$....:19000:0:99999:7:::
所有用户对passwd文件均可读取,只有root用户对shadow文件可读,因此密码存放在shadow文件中更安全。
/etc/group
组名:密码:组ID:组成员
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog
users:x:100:alice,bob,charlie
developers:x:101:alice,bob
/etc/gshadow
组名:组密码:管理员:组成员
root:!:root:daemon
admins:!:alice,bob
users::alice,bob,charlie
配置代理
firefox - 设置 - 常规 - 网络设置
export https_proxy=http://xxx:7890
export http_proxy=http://xxx:7890
export all_proxy=socks5://xxx:7890
git config --global http.proxy http://xxx:7890
git config --global https.proxy http://xxx:7890
wsl突然打不开了,重启也没用
1.cmd下管理员权限执行netsh winsock reset
2.重启电脑
https://blog.csdn.net/qq_41048761/article/details/121420814
linux下apt install报错
APT 包管理器在下载软件包索引文件时出现了 Hash Sum Mismatch 错误。这通常是由于网络问题、镜像源不一致或缓存损坏导致的。
apt clean
rm -rf /var/lib/apt/lists/*
apt update
git在配置ssh key后出现如下错误:
ssh -T git@github.com
nc: connect to xxx.xxx.xxx.xxx port 7890 (tcp) failed: Connection refused
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535
换端口
ssh -T -p 443 git@ssh.github.com
git clone失败
https://blog.csdn.net/qq_30252465/article/details/125762378
加大缓存
git config --global http.postBuffer 1024M
wsl2下git push失败
https://blog.csdn.net/PleaseBeStrong/article/details/139378481
# 删除原始origin
git remote remove origin
# 使用ssh
git remote add origin git@github.com:Charlesbibi/Simple_Cloud.git
# 正常push就没问题了
git push -u origin main
连接服务器容易掉线
https://blog.csdn.net/sanqima/article/details/118293157
https://blog.csdn.net/qq_39846820/article/details/103371782
在没有sudo权限的用户中使用git && 创建和使用容器
mkdir myssh1
cd myssh1
ssh-keygen -t ed25519 -C "xxxx@xxxxx.com" -f ./id_ed25519
# 将pub内容复制到github
ssh -i id_ed25519 git@github.com # 测试连接
mkdir -p ~/myssh1/configs/
vim ~/myssh1/configs/config_ssh
# config_ssh内容
# Host github.com
# IdentityAgent none
# IdentityFile ~/myssh1/id_ed25519
# User git
alias git_ssh='GIT_SSH_COMMAND="ssh -F ~/myssh1/configs/config_ssh" git' # 设置别名
git_ssh clone git@github.com:xlite-dev/LeetCUDA.git # 克隆方式
# 新建的容器加上:
-v ~/myssh1/id_ed25519:/root/.ssh/id_ed25519 \
-e GIT_SSH_COMMAND='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' \
# 如果是现有的容器
docker cp ~/myssh1/id_ed25519 fa:/root/.ssh/id_ed25519
完整流程
创建容器
docker create \
--gpus all \
--net=host \
--runtime=nvidia \
--shm-size="10g" \
--cap-add=SYS_ADMIN \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
--security-opt apparmor=unconfined \
-v ~/mycode/fa:/root/fa \
-v ~/myssh1/id_ed25519:/root/.ssh/id_ed25519 \
-e GIT_SSH_COMMAND='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' \
--name fa \
nvcr.io/nvidia/pytorch:24.08-py3 \
sleep infinity
docker start fa
docker exec -it fa bash
# 删除容器
docker stop fa
docker rm fa
首次使用该容器:
# 设置权限
chmod 600 /root/.ssh/id_ed25519
# 测试连接 GitHub
ssh -i /root/.ssh/id_ed25519 -T git@github.com
git config --global user.name "YourName"
git config --global user.email "your_email@example.com"
# 现在可以使用
cd /root/fa
git clone git@github.com:xlite-dev/LeetCUDA.git
本地挂载到服务器
# Ubuntu/Debian 安装 sshfs
sudo apt-get install sshfs
# 创建本地挂载点
mkdir ~/remote_server_dir
# 挂载远程目录
sshfs user@server_ip:/remote/path ~/remote_server_dir
# 卸载
fusermount -u ~/remote_server_dir
定时备份服务器内容
#!/bin/bash
# 配置项
LOG_DIR="~/remote_backups/logs-3090-3"
KEEP_LOGS=3 # 保留最近3个日志文件
# 创建日志目录
mkdir -p "$LOG_DIR"
# 生成带时间戳的日志文件名
DATE=$(date +"%Y%m%d_%H%M%S")
LOGFILE="$LOG_DIR/backup_$DATE.log"
# 日志记录
exec > "$LOGFILE" 2>&1
echo "Backup started at $(date)"
# 锁机制
LOCKFILE="/tmp/backup.lock"
exec 200>$LOCKFILE
flock -n 200 || { echo "Backup already running"; exit 1; }
# 检查是否启用备份
ENABLE_FILE="~/scripts/backup_enabled"
if [ ! -f "$ENABLE_FILE" ]; then
echo "Backup is disabled. To enable, create the file: $ENABLE_FILE"
exit 0
fi
# 其他配置项
REMOTE_USER="..."
REMOTE_HOST="10.30.16.24"
REMOTE_DIR="~"
LOCAL_BACKUP_DIR="~/remote_backups/3090-3"
BACKUP_NAME="backup_$DATE-$(printf "%04d" $$).tar.gz"
# 创建备份目录
mkdir -p "$LOCAL_BACKUP_DIR"
# 同步远程数据
rsync -avz --delete -e ssh $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR $LOCAL_BACKUP_DIR/tmp_backup || { echo "rsync failed"; exit 1; }
# 打包压缩
cd "$LOCAL_BACKUP_DIR" || exit 1
tar -czf "$BACKUP_NAME" -C tmp_backup . || { echo "tar failed"; exit 1; }
# 清理临时目录
rm -rf "$LOCAL_BACKUP_DIR/tmp_backup"
# 保留最近3个备份文件
if ls "$LOCAL_BACKUP_DIR/backup_*.tar.gz" 1>/dev/null 2>&1; then
ls -t "$LOCAL_BACKUP_DIR/backup_*.tar.gz" | tail -n +4 | xargs rm -f
fi
# 清理旧日志文件
find "$LOG_DIR" -name "backup_*.log" | sort | head -n -$KEEP_LOGS | xargs -r rm -f
echo "Backup completed at $(date)"
crontab -e
# 添加以下条目
# */30 * * * * .../server-backup.sh