在linux上的一些操作

  1. scp
    scp -r '/home/usrname/project/XXXX.fa' [email protected]:~/filename/
    scp将本地文件上传到服务器(或者是别人)。server_username是在服务器上的用户名。你要把文件传到哪里,就在哪里打开终端。比方说你要把服务器上的文件传到本地,就在本地打开终端来scp。
    scp commands总结

  2. git clone
    git clone 'clone or download按钮下的HTTPS' '要clone过来的目录'

  3. md5sum
    md5sum 'XX/XX/filename'
    输入两个文件看两个文件是否完全一样。

  4. check ubuntu version
    lsb_release -a

  5. ubuntu 16.04 更新 r-base
    试试这个:https://stackoverflow.com/questions/55929757/installing-r-3-6-on-ubuntu-disco-19-04

  6. Print出fasta文件中每个reads的count数
    grep -v '>' XXXX.fasta | awk '{print length}'

  7. 还是grep
    zgrep的时候,要查找的字符没有颜色标记
    标准输出再解压,然后pip给grep,即有标记
    gzip -cd XXX.fastq.gz | grep -n 'string'

  8. 压缩
    保留原始.gz文件 并 解压到当前路径
    gunzip -c 'XXXX.fastq.gz' > 'XXXX.fastq'
    保留原始文件 并 压缩到当前路径
    gzip -c 'XXXX.fastq.gz' > 'XXXX.fastq' 不保留原文件的话,就gzip 'XXX.fastq',默认为.gz
    参考这个连接

  9. 解压显示末10行
    unzip XXX.gz -c | tail -n 10

  10. 建软连接,用scp传输
    比方说要传输给别人的文件分布在各个文件夹里,可以先新建一个文件夹,把各个文件的软链接(像快捷方式)放在里面,再scp给别人
    ln -s 'XXX/XXX/XXX.fa' 'XXX/X/X.txt' softlinktmp/
    cd softlinktmp/
    scp * XX@....:/XX/XX/XX

  11. 在服务器上运行jupyter lab, 在本地浏览器打开并操作
    参考这个连接
    还有这个

  • 登录服务器,写一个如下所示的.json, 保存在~/.jupyter/jupyter_notebook_config.json
{
  "NotebookApp": {
    "ip": "*",
    "open_browser": false
  }
}
  • 在服务器里运行jupyter lab试一下
    我在这里报错:KeyError:'allow_remote_access'参考
    服务器中vim打开vim ~/.jupyter/jupyter_notebook_config.py, 添加 c.NotebookApp.allow_remote_access = True,保存。再试一下就可以运行了。
  • 在本地ssh:
    ssh -L 8000:127.0.0.1:8888 [email protected]
    进入服务器终端后,运行jupyter lab
    会发现一个token码:
    The jupyter notebook is running at: http://...../?token=XXXXXXXXXXXX
  • 复制上述token码,在本地浏览器中http://127.0.0.1:8000,如下所示:

输入token码即login可使用了。
另外如果要access本地的文件,可以直接拖拽到jupyter lab的左侧文件栏,就将文件upload到服务器上了。

  1. 查看路径中所有文件的大小
    du -h 就显示所有文件human readable size

  2. anaconda教程:(暂时够用了)
    https://zhuanlan.zhihu.com/p/32925500
    在conda里装个qiime1虚拟环境
    conda --version 先看看你的conda装了没
    conda env list 看看已经建好的环境都是啥
    conda create --name qiime1 建个叫qiime1的conda环境
    conda activate qiime1 到qiime1环境里去
    conda list 看看里面有什么(新建的就是空的)
    conda install -c bioconda qiime 在这个环境里安装qiime1,安装好了再conda list一下看看
    print_qiime_config.py直接在终端输入看看
    conda deactivate 退出conda

  3. 一个疑惑:我用11中提到的方法在本地打开了在服务器上运行的jupyter lab,然后试图用subprocess.Popen()来运行命令行,进入服务器我账户下的一个conda环境中用qiime1,但是一直报错
    nCommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.\nTo initialize your shell, run\n\n $ conda init \n\nCurrently supported shells are:\n - bash\n - fish\n - tcsh\n - xonsh\n - zsh\n - powershell\n\nSee 'conda init --help' for more information and options.\n\nIMPORTANT: You may need to close and restart your shell after running 'conda init'
    即使我在subprocess.Popen()conda init bash了,也没法重启shell....?
    最后我只好写XXX.py,在服务器终端我的conda里运行。

  4. 在conda里安装了Multiqc,但是没法update,总是v1.0,要装v1.6的
    参考 https://github.com/ewels/MultiQC/issues/729
    conda config --add channels defaults
    conda config --add channels conda-forge
    conda config --add channels bioconda
    conda install -y -c bioconda multiqc multiqc=1.6

  5. 在服务器里,想把自己所有的撒比进程都kill掉
    pkill -u your_user_name
    查看进程:ps -ef
    参考

  6. 一个文件夹的大小 disk usage
    du -sh XXX/ or du -h XX/

  7. 硬盘disk free
    df -h

  8. htop的解读
    在win10的ubuntu终端

PID:进程编码
USER:用户名:开这个进程的人
PR:进程的优先级
NI:进程的优先级:最小-20,最大20
VIRT:进程占用的虚拟内存值 (kb, =SWAP+RES)
RES:进程占用的物理内存值(kb)
SHR:进程使用的共享内存值(kb)
S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
%CPU:进程占用的CPU使用率
%MEM:进程占用的物理内存占总内存的百分比
TIME+:该进程启动后占用的总的CPU时间
COMMAND:进程启动的启动命令名称
只看某个user的进程:u 然后选择user, Enter

  1. conda install出现报错:Segmentation fault(core dumped)
    不用把conda清空重新装:
    conda install spyder
    然后再install一次即可

  2. Linux系统图形界面卡死,kill掉进程
    你手贱点错了东西,linux的图形界面卡死了。终端ctrl + alt + t也打不开,这周你暴力关主机重启两次了,不想再折腾命苦的电脑了。
    Ctrl + Alt + F1(F1-6都行)打开终端字符界面,整个显示屏变成黑底白字。不要孩怕,输入你的用户名和密码进入终端,和图形界面上的终端一样的使用。通过top或者htop找到你要kill的PID:
    kill -9 PID
    然后再top或者htop一下,看看内存还在不在。
    还在的话切换回图形界面Ctrl + Alt + F7
    要是你问我Ctrl + Alt + F1都没有反应怎么办,等我遇到了再说。
    ....没想到这么快就遇到了,彻底卡死,只好按关机键暴力重启了=_=

  3. tmux
    https://linuxize.com/post/getting-started-with-tmux/
    分屏之后如果要调整各屏幕的大小:
    Ctrl+b + Alt+↑ 向上调整,就向下调整,左右同理。
    要退出(但是不关闭)sessions,则Ctrl+b +d ,然后想再进入则tmux attach即可

  4. 一个文件夹里有多少个文件
    cd XX/
    ls | wc -l

  5. 在ENA上下载数据
    下载整个project的序列数据用这个脚本试试:
    https://github.com/EnzoAndree/getENA
    下载samples的metadata:
    通过biosample的API获取json文件,比方说:
    https://www.ebi.ac.uk/biosamples/api/samples/SAMEA104228123

response = requests.get('https://www.ebi.ac.uk/biosamples/api/samples/{0}'.format('SAMEA104228123'))
content = response.content.decode('utf-8')
content_js = json.loads(content)['description']
# json.loads(content) 是一个字典,可以在里面找你要的Metadata了
  1. 在服务器上安装conda
    参考https://stackoverflow.com/questions/54226763/installing-anaconda-on-server

  2. 在服务器上运行jupyter lab, 想要用某个conda的kernel
    参考这个连接https://medium.com/@nrk25693/how-to-add-your-conda-environment-to-your-jupyter-notebook-in-just-4-steps-abeab8b8d084
    conda install -c anaconda ipykernel
    python -m ipykernel install --user --name=conda的名称
    重启一下jupyter lab的kernel,然后在kernel选择里选择你的conda即可 (好炫啊...还能这样搞)

  3. 在conda里pip install
    你想用conda安装一个包,但是这个包似乎没有conda安装的途径。conda之外是python3.5, conda里是3.6的环境。你想在conda里安装3.6的版本。
    先进到conda里来:
    (condaname)$ python3 -m pip install XXXX --user (在conda里python3是3.6的。 --user是因为我在服务器里,不能sudo)

  4. htop kill 进程
    F6 sort: 按照左边的提示选择按照什么来sort,enter
    F9 选中某个进程之后,快速按两下F9,按9,看到左边显示“Sigkill”,enter即可kill掉该进程

  5. Ctrl + Z
    将正在运行的东西挂起(stopped),然后按fg 后回车恢复。

  6. 在服务器上用别人的conda
    问到别人conda的路径:
    conda activate /XX/username/anaconda/envs/conda_name/

  7. print出一个directory里有多少个file
    ls -1 | wc -l

  8. 把shell中的Output输出到file
    $ cmd... >> XX.txt 是标准输出,要输出error:
    $ cmd... &>> XX.txt

你可能感兴趣的:(在linux上的一些操作)