持续更新。。。
一、建立软链接
ln -s 源文件(夹)的绝对路径 目标链接位置绝对路径
# 链接文件夹
ln -s /path/to/source_dir/ /path/to/target_name
# 链接文件
ln -s /path/to/source_file /path/to/target_name
注意:
1. 两个位置均需要绝对路径。
2. 目标路径不存在。
3. 源文件夹有/,源文件没有/,目标链接位置均没有/。
二、移动空文件夹、文件夹、文件
mv 源路径 目的路径
注意:
1. 都不用加 -r。
2. 不需要保证目的路径事先存在。
三、复制空文件夹、文件夹、文件
# 复制文件夹、空文件夹
cp -r 源目录 目的目录
# 复制文件
cp 源文件 目的文件
注意:
1. 复制文件夹时要加 -r,不管是不是空的。
2. 不需要保证目的路径事先存在。
四、zip的压缩、解压缩:
# 压缩zip
zip -rq 压缩生成文件名(绝对路径).zip 待压缩文件或文件名(绝对路径)
# 解压缩zip到当前路径
unzip 待压缩文件或文件名(绝对路径).zip
五、终端显示/隐藏光标:
# 显示光标
echo -e "\033[?25h"
# 隐藏光标
echo -e "\033[?25l"
六、修改linux服务器当前登录用户密码(避开Bad: new password is too simple 等提示)
sudo passwd 用户名
注意:一定不能少【用户名】,否则变成修改root密码,而不是当前登录用户的密码。
七、配置服务器ssh一直连接。防止报错packet_write_wait: Connection to xxx.xx.xx.xxx port 22: Broken pipe:
# 服务器执行:
sudo vim /etc/ssh/sshd_config
# 在最后添加一行:
ClientAliveInterval 60
八、查看包含xxx的进程
ps -ef | grep pycharm
九、kill进程
kill -s 9 进程id1 进程id2
十、修改文件夹用户权限
sudo chown user:user file_root/ -R
十一、docker commit
通过commit来持久化镜像环境:
1. 退出正在运行的镜像(exit)。
2. 执行commit命令
sudo docker commit -m="update packages" <CONTAINER ID> <要创建的目标镜像名(可同原镜像名)>
3. 停止原镜像及容器:
./stop_docker.sh
4. 重新进入:
./start_docker.sh
十二、docker保存镜像到本地,并加载本地镜像文件
1、查看已有镜像
docker images
2、将镜像打包成本地文件
指令:docker save 镜像id > 文件名.tar
docker save IMAGE ID >./filename.tar# filename.tar为打包的文件
3、从本地加载镜像文件
指令:docker load < 文件名.tar
docker load < filename.tar # filename.tar 为文件名称
4、给加载的镜像打标签
指令:docker tag 镜像id 镜像名:标签
docker tag IMAGE ID REPOSITORY:TAG
十三、新服务器配置:
1.恢复出厂设置——新建管理员用户后,命令行只有
$
解决方案:
(1)查看/etc/passwd文件后发现,新建的用户未指定shell
命令行输入:
vi /etc/passwd
(2)将其指定为/bin/bash
sudo usermod -s /bin/bash 当前用户名
(3)重启
2. 设置免密登录(公钥方式)
步骤为:本机生成ssh公钥 --> 将本机公钥copy到服务器的 ~/.ssh/authorized_keys 文件中(没有此文件则新建即可)
(1)本机执行ssh-keygen,后面选项直接enter,然后在本机的~/.ssh目录下会生成id_rsa和id_rsa.pub两个文件。id_rsa.pub文件即为本机的公钥。
(2)将id_rsa.pub文件的内容copy到服务器的~/.ssh/authorized_keys文件中,若authorized_keys文件不存在则新建即可。
3. 设置服务器保持连接
(1)修改/etc/ssh/sshd_config配置文件中以下两个参数:
1)ClientAliveInterval:设置为想要的时间,单位为秒,比如设置为60秒,则服务器每1分钟向客户端发送保持连接的请求。
2)、ClientAliveCountMax:此参数指服务器根据ClientAliveInterval时间间隔发送保持连接的请求时,如果发现客户端没有响应,则判断为一次超时,这个参数设置允许超时的次数。默认为3,客户端一般不会没响应,设置为默认值3即可。
假如ClientAliveInterval为60,ClientAliveCountMax为3,则实际的超时时间为60*3=3分钟。
(2)执行service sshd reload,使修改生效。
十四、sudo: unable to resolve host 10-0-129-44
(sudo) vim /etc/hosts:
127.0.0.1 localhost
127.0.0.1 10-0-129-44 # 要保证这个名字与 /etc/hostname中的主机名一致才有效
这样设完后, 使用sudo 就不会再有那个提示信息了。
十五、解决Docker运行命令时提示“Got permission denied while trying to connect to the Docker daemon socket”
docker守护进程启动的时候,会默认赋予名字为docker的用户组读写Unix socket的权限,因此只要创建docker用户组,并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令。
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
docker ps #测试docker命令是否可以使用sudo正常使用
十六、实时显示nvidia-smi,并显示差异
# 每隔1s显示一次
watch -n 1 -d nvidia-smi
十七、查询/统计指定目录下的文件数量(包含子目录)
ls -lR ./data/ | grep "^-" | wc -l
# 统计dir_name下制定后缀的文件数量
find dir_name -name *.jpg | wc -l
十八、开启/关闭Nividia的GIM模式
# 关闭所有卡
nvidia-smi -mig 0
# 关闭单个卡
nvidia-smi -i 0 -mig 0
# 开启所有卡
nvidia-smi -mig 1
# 开启单个卡
nvidia-smi -i 0 -mig 1
十九、安装cuda并配置
vim ~/.bashrc
export PATH="/usr/local/cuda-11.3/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATH"
source ~/.bashrc
二十、ctrl+z及其恢复
ctrl+z的是将任务中断, 但是此任务并没有结束,他仍然在进程中,他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行。
二十一、ctrl+z及其恢复
批量改变文件夹下图片的分辨率。
# 640x320分别为图片宽和高
find -name "*.jpg" -exec convert -resize 640x320 {} {} \;
二十二、解压某个目录及其子目录下的所有zip文件、tar包
1. 解压zip
# 解压zip文件
# 到指定目录
find /path/to/directory -type f -name "*.zip" -exec unzip {} -d /path/to/extract \;
# 到各自所在的原目录
find /path/to/directory -type f -name "*.zip" -exec unzip {} \;
2. 解压tar包
# tar包
# 解压到指定目录
find /path/to/directory -type f -name "*.tar*" -exec tar xf {} -C /path/to/extract \;
# 解压到它们各自所在的原目录
find /path/to/directory -type f -name "*.tar*" -execdir tar xf {} \;
二十三、重定向符 '>'
在 Linux 中,可以使用重定向操作符 '>
' 将 Python 代码的输出和终端的输出定向到一个文件中。
1. 将 Python 代码的输出定向到文件:
python your_code.py > log.txt
上述命令将运行名为 your_code.py
的 Python 代码,并将其输出写入到名为 log.txt
的文件中。如果文件不存在,它将被创建;如果文件已存在,它将被覆盖。
2. 将终端输出和 Python 代码的输出都定向到文件:
python your_code.py > log.txt 2>&1
上述命令将运行 Python 代码并将其输出写入到 log.txt
文件中。2>&1
表示将标准错误输出(stderr)与标准输出(stdout)合并,然后将它们一起定向到文件中。
请注意,>
操作符会覆盖文件中的内容。如果你希望将输出追加到文件末尾而不覆盖原有内容,可以使用 >>
操作符,例如:
python your_code.py >> log.txt 2>&1
二十四、解压 7z 文件
7z x filename.7z