因为ascp命令是安装在小环境中,而且key_ssh=/home/data/vip13t42/miniconda3/envs/rna/etc/asperaweb_id_dsa.openssh 这个ascp密钥的变量是即时的,关闭xshell就没了。因此,先写个wx.sh脚本,在脚本中启动小环境,并运行批量下载fastq文件命令。
#!/bin/bash
#先初始化conda
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/data/vip13t42/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/home/data/vip13t42/miniconda3/etc/profile.d/conda.sh" ]; then
. "/home/data/vip13t42/miniconda3/etc/profile.d/conda.sh"
else
export PATH="/home/data/vip13t42/miniconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
# 启动小环境,因为ascp命令是安装在小环境中
conda activate rna
# temp.url存放着fastq文件下载地址列表
key_ssh=/home/data/vip13t42/miniconda3/envs/rna/etc/asperaweb_id_dsa.openssh
cat temp.url | while read id
do
ascp -k 1 -QT -l 300m -P33001 -i $key_ssh era-fasp@${id} ./
done
然后通过nohup命令来挂载到后台。
nohup wx.sh &
jobs查看下
成功挂载到后台运行。
——————————————————
更新:
生信技能树卖萌哥老师说也可以这样:
key_ssh=/home/data/vip13t42/miniconda3/envs/rna/etc/asperaweb_id_dsa.openssh
cat temp.url | while read id
do
ascp -k 1 -QT -l 300m -P33001 -i $key_ssh era-fasp@${id} ./
done
通过Ctrl+z暂停程序,然后运行以下命令也可以挂载到后台,效果等同nohup。
bg %1
disown %1
亲测有效。