# 【随时记录】Linux命令

笔者之前学习linux时候,学得七窍生烟。现在七窍通了六窍,一窍不通。 linux命令看了又忘,每次都令人抓狂,因此决定在此记录一些最常用的命令,和一些最基本的概念。

# 目录与层级

linux的目录层次可参考: https://www.cnblogs.com/silence-hust/p/4319415.html

ls列出当前文件夹中的所有文件名称 cd [folder_name]进入某个文件夹 cd ..回到上一级目录

这里我就一直有一个问题搞不懂: 进入linux系统的时候,我的目录是:

我一直以为这是根目录,但是后来在反复的cd ..后,发现自己进入了这个目录:

一下子把我搞懵了。 后来查了查,才发现,是我们用户的目录,一个系统可能会有多个用户,当前用户的目录就是。而系统根目录是/

要回到用户的目录,只需要输入cd ~即可; 要访问根目录,也是只需要输入cd /即可。

Linux系统上传文件到linux服务器,不能通过rz命令,因为需要端支持,如Xshell 此时,应该使用scp命令: 例如:

scp -r /media/x1c/文档/Jupyter/--NLP/big_things/w2v/GoogleNews-vectors-negative300.bin root@202.121.138.168:/root/Documents/gby2019/wvmodels
1

即: scp -r 本地文件地址 username@hostname:服务器目标地址

这个命令还可以上传文件夹

如果反过来,想把服务器上的文件传到本地,则把服务器地址和本地地址颠倒过来即可: scp -r username@hostname:服务器文件地址 本地目标地址

确认有可用CUDA的gpu: lspci | grep -i nvidia

查看系统信息: uname -m && cat /etc/*release

修改文件、目录权限 sudo chmod -R 777 /home/gby/Documents 777代表权限模式,不用具体管,反正777就是最大的权限了。

# 查看磁盘占用

df -h du -h https://www.runoob.com/w3cnote/linux-view-disk-space.html

# Vim

https://www.runoob.com/linux/linux-vim.html

# vim的粘贴模式

:set paste https://blog.csdn.net/wzy_1988/article/details/50264285?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

# vim全选,全复制,全删除

ggvGd https://blog.csdn.net/ztf312/article/details/83025297

# 让程序后台运行,不随中断终端

nohup 命令 &

# 查看后台运行的所有程序

ps x 通过grep则可以进一步搜索具体的进程,xxx就写想查的进程中包含的字符 ps -aux | grep xxx

# 查看cpu实时使用情况

top

# tail命令

tail 命令可用于查看文件的内容,有一个常用的参数-f常用于查阅正在改变的日志文件。

tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。 这个时候,对应目录会生成一个nohup.out的文件,可以在里面看到后台程序运行时的一些日志。

# 压缩/解压

  • zip打包文件夹:zip -r 打包后的名字 要打包的文件/文件夹
  • 解压.gz文件:(https://linuxize.com/post/how-to-unzip-gz-file/) gzip -d file.gz (The command will restore the compressed file to its original state and remove the .gz file.) gzip -dk file.gz (To keep the compressed file pass the -k option to the command:)

# 生成项目的python依赖

pip install pipreqs 使用的时候也很简单,进入项目的根目录 pipreqs ./

# 可以显示进度的文件传输

rsync --progress 文件路径 ~/

# Screen命令

通过apt-get updateapt-get install screen安装

sudo apt-get update
sudo apt-get install screen
1
2

创建新screen:screen -S screen_name

查看所有的screen:screen -ls

退出当前screen(程序继续运行):按Ctrl+a+d三个键

有时候忘记在哪里开了某个screen,导致直接 screen -r无法进入,可以使用 screen -d name/id来先把那个screen退出,就可以进去,放心这不会kill那个screen

关闭(kill)某个screen:进入之后,输入exit即可

重新进入某个screen:screen -r screen_name/screen_id

更多的一些例子参见:https://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html

这个挺好:https://www.liquidweb.com/kb/how-to-use-the-screen-command-in-linux/

在screen模式下进行上下滚动:先同时按CTRL+A键,然后再按esc,就可以滚动了。要退出滚动,就再esc一下。

# ps 和 kill

查看后台程序 ps -x

后面还可以加一些筛选,比如查询后台所有包含 "beyond"的程序:

ps -x | grep beyond

kill命令,除了直接kill [PID]之外,还可以按照名字来kill一大批:

pkill -f *beyond* 就会把所有名字里包含beyond的程序都关掉。

# conda environment

创建环境(直接拷贝现有环境):

conda create -n your_env_name --clone some_other_env

创建全新环境,并指定python版本:

conda create -n your_env_name python=3.8

删除某环境:

conda env remove -n your_env_name

# CUDA

check cuda version: nvcc --version

运行程序时指定CUDA device:

① 在命令行指定:

CUDA_VISIBLE_DEVICES=1 python my_script.py

② 在程序内设定:

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "2"
1
2

或者对于torch:

import torch
torch.cuda.set_device(id)
1
2

# 文件访问权限

例如对于私钥,你要设置成只有你自己可读:

Keys need to be only readable by you:

chmod 400 ~/.ssh/id_rsa
1

If Keys need to be read-writable by you:

chmod 600 ~/.ssh/id_rsa
1

最高权限: chmod 777

# jupyter

发现需要密码的话,可以通过这个命令设置自己的密码,不需要之前的密码是啥:

jupyter notebook password

# 下载Google Drive文件

pip install gdown

gdown <file_id>

file_id的位置,一般在分享链接的这里:https://drive.google.com/file/d/<file_id>/view?usp=sharing

# 环境变量

https://www.baeldung.com/linux/path-variable

To append a new path, we reassign PATH with the new path at the end:

export PATH=$PATH:/some/new/path
1

export PATH=$PATH:/home/v-biyangguo/.local/bin

# 查看python位置

查看所有python路径:

whereis python

查看当前用的哪个python:

which python

# 打包python环境依赖

https://towardsdatascience.com/stop-using-pip-freeze-for-your-python-projects-9c37181730f9

使用pipreqs包:

pip install pipreqs

然后直接在你的project目录下执行**pipreqs**即可得到requirements.txt。这个比使用pip freeze > requirements.txt的方式更好,详情见连接。