因为ascp命令是安装在小环境中,而且key_ssh=/home/data/vip13t42/miniconda3/envs/rna/etc/asperaweb_id_dsa.openssh 这个ascp密钥的变量是即时的,关闭xshell就没了。因此,先写个wx.sh脚本,在脚本中启动小环境,并运行批量下载fastq文件命令。

    1. #!/bin/bash
    2. #先初始化conda
    3. # >>> conda initialize >>>
    4. # !! Contents within this block are managed by 'conda init' !!
    5. __conda_setup="$('/home/data/vip13t42/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
    6. if [ $? -eq 0 ]; then
    7. eval "$__conda_setup"
    8. else
    9. if [ -f "/home/data/vip13t42/miniconda3/etc/profile.d/conda.sh" ]; then
    10. . "/home/data/vip13t42/miniconda3/etc/profile.d/conda.sh"
    11. else
    12. export PATH="/home/data/vip13t42/miniconda3/bin:$PATH"
    13. fi
    14. fi
    15. unset __conda_setup
    16. # <<< conda initialize <<<
    17. # 启动小环境,因为ascp命令是安装在小环境中
    18. conda activate rna
    19. # temp.url存放着fastq文件下载地址列表
    20. key_ssh=/home/data/vip13t42/miniconda3/envs/rna/etc/asperaweb_id_dsa.openssh
    21. cat temp.url | while read id
    22. do
    23. ascp -k 1 -QT -l 300m -P33001 -i $key_ssh era-fasp@${id} ./
    24. done

    然后通过nohup命令来挂载到后台。

    1. nohup wx.sh &

    jobs查看下image.png
    成功挂载到后台运行。

    ——————————————————
    更新:
    生信技能树卖萌哥老师说也可以这样:

    1. key_ssh=/home/data/vip13t42/miniconda3/envs/rna/etc/asperaweb_id_dsa.openssh
    2. cat temp.url | while read id
    3. do
    4. ascp -k 1 -QT -l 300m -P33001 -i $key_ssh era-fasp@${id} ./
    5. done

    通过Ctrl+z暂停程序,然后运行以下命令也可以挂载到后台,效果等同nohup。

    1. bg %1
    2. disown %1

    亲测有效。