Skip to main content

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

alt text

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异常被占满:

alt text

分析发现程序占用内存过大导致,修改完程序后清空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

Ubuntu 安装

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 ### 删除用户组