美文网首页生信分析
在linux上的一些操作

在linux上的一些操作

作者: GPZ_Lab | 来源:发表于2019-05-22 18:00 被阅读0次
    1. scp
      scp -r '/home/usrname/project/XXXX.fa' server_username@XX.XX.X.XX:~/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 username@XX.XX.X.XX
      进入服务器终端后,运行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 <SHELL_NAME>\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上的一些操作

        本文链接:https://www.haomeiwen.com/subject/jelbmqtx.html