Linux
ubuntu更新gcc
sudo apt-get install gcc-13 g++-13
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 100
sudo update-alternatives --config gcc
释放意外退出进程占用的显存
程序意外退出,却占用显存,nvitop显示no such process

fuser -v /dev/nvidia*
kill -9 <proc>
查看pid属于哪个用户
ps aux | grep [pid]
ubuntu 切换gcc版本
sudo apt install gcc-9
sudo apt install g++-9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 100 --slave /usr/bin/g++ g++ /usr/bin/g++-9
sudo update-alternatives --config gcc
第一次挂载硬盘
root@amax:/home/amax# mkdir /data0
root@amax:/home/amax# mkdir /data1
root@amax:/home/amax# mkdir /data2
root@amax:/home/amax# blkid /dev/sdb1 >> /etc/fstab
root@amax:/home/amax# blkid /dev/sdb2 >> /etc/fstab
root@amax:/home/amax# blkid /dev/sdb3 >> /etc/fstab
root@amax:/home/amax# vim /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda3 during installation
UUID=a6165ffd-8fc8-4401-b66f-41e71f2b06ce / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=00BE-72B9 /boot/efi vfat umask=0077 0 1
# swap was on /dev/sda2 during installation
UUID=46ebde46-77e3-4866-8b12-058860e78f1d none swap sw 0 0
UUID="50dc4b40-1e6a-4abb-9084-bf765b3b3a47" /data0 ext4 defaults 0 0
UUID="8ce80a09-9ec4-4c87-be59-60feacdfd4d1" /data1 ext4 defaults 0 0
UUID="00c2a7f8-3e2f-4ac3-8d5a-965ce71ebfe4" /data2 ext4 defaults 0 0
root@amax:/home/amax# mount -a
查看GLIBC支持版本
strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_
设置DNS
sudo resolvconf -u
查看ssh系统日志
sudo journalctl -u ssh --no-pager | grep -i "stop\|exit\|shut down\|fail"
sudo grep "Failed password" /var/log/auth.log* | awk '{print $11}' | sort | uniq -c | sort -nr
查看硬盘信息
ps -aux
挂载硬盘总结
# 查看硬盘挂载情况
lsblk
df -kh
# 挂载
sudo mount /dev/sdb /home #物理地址 逻辑地址
Read-only file system
sudo mount -o remount,rw /
GPU有关查询
nvidia-smi --query-compute-apps=pid,used_memory --format=csv
清空swap内存
某次分布式训练程序运行很慢而且会报错 torch.distributed.elastic.multiprocessing.errors.childFailedError, 网上说是子进程遇到资源不足的问题报错,观察内存发现swap异常被占满:

分析发现程序占用内存过大导致,修改完程序后清空swap内存:
# root
swapoff -a
swapon -a
删除一个txt文件的每行的第一个0
sed 是一个流编辑器,适合处理文本行的修改,如果不想生成新文件,可以用 sed -i:
sed 's/^0//' input.txt > output.txt
sed -i 's/^0//' input.txt
删除监听在某端口的所有程序
kill $(lsof -t -i:29502 -a -u hh)
删除某个用户的所有python程序
killall -u username python
scp
# 从服务器下载整个目录
scp -r username@servername:remote_dir/ /tmp/local_dir
# 上传目录到服务器
scp -r /tmp/local_dir username@servername:remote_dir
bash: /usr/bin/cp: Argument list too long
cp 或者 mv命令复制移动的文件太多会导致这个问题
find 源路径 -name "*.jpg" -type f -print0 | xargs -0 cp -t 目标路径
用户操作
sudo useradd -m -d 用户主目录 -c "用户描述" 用户名
sudo passwd 用户名
## 修改用户根目录
# sudo下设置根目录
usermod -d /data2/hh hh
sudo mkdir /data2/hh
chown -R tom /opt/test
# 此命令是指定test文件夹的所有者是tom,-R是递归。如果test是文件就去掉-R。
lastlog
sudo userdel -r xxx
last -x -F
Unable to determine the device handle for GPU0000:81:00.0: Unknown Error
推测是供电不足导致的问题,因此需要限制显卡功率
# 查看显卡功率
sudo nvidia-smi -q | grep 'Power Limit'
# 开启持久模式
sudo nvidia-smi -pm 1
# 限制某张卡的功率为250W
sudo nvidia-smi -i 1 -pl 250
PostgreSQL
sudo apt install postgresql
sudo service postgresql status
sudo -i -u postgres # 密码为空
psql # 进入数据库终端
ALTER USER postgres WITH PASSWORD 'Lpf65BsDhDNdaJmH';
# 创建名为 mydbuser 的用户,为 mydbuser 设置密码,并为 mydbuser 分配 CREATEROLE 和 CREATEDB 权限:
postgres=# CREATE USER mydbuser WITH PASSWORD 'mypasswd' CREATEROLE CREATEDB;
CREATE ROLE
\du #查看用户
# 使用 \q meta 命令从互动终端注销:
postgres=# \q
# 注销 postgres 用户会话:
$ logout
# 以 mydbuser 用户身份登录 PostgreSQL 终端,指定主机名并连接到默认的 postgres 数据库,该数据库在初始化过程中创建:
psql -h 127.0.0.1 -p 5432 -U hh -d postgres
# 创建数据库
create database track;
\l # 查看数据库
卸载:
sudo systemctl stop postgresql ### 关闭数据库服务
sudo systemctl status postgresql ### 确认数据库服务处于关闭状态
sudo apt-get purge 'postgresql-*' ### 卸载数据库
sudo apt-get autoremove 'postgresql-*' ### 卸载数据库依赖包
sudo rm -r /etc/postgresql/ ### 删除配置文件
sudo rm -r /etc/postgresql-common/ ### 删除配置文件
sudo rm -r /var/lib/postgresql/ ### 删除数据目录
sudo userdel -r postgres ### 删除用户
sudo groupdel postgres ### 删除用户组