现在,对于几个实例,我遇到了一些非常奇怪的行为,在运行一个脚本后,该脚本在该目录中创建新目录并向其中写入文件,该目录中的部分目录和文件被删除。
有关我的系统的详细信息:
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
Linux ThinkPad-P16s-Gen-1 6.2.0-37-generic #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
Filesystem Size Used Avail Use% Mounted on
tmpfs 1,6G 2,9M 1,6G 1% /run
/dev/nvme0n1p6 144G 132G 3,9G 98% /
tmpfs 7,7G 76M 7,6G 1% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
/dev/nvme0n1p1 256M 58M 199M 23% /boot/efi
tmpfs 1,6G 132K 1,6G 1% /run/user/1001
/dev/nvme0n1p4 684G 429G 255G 63% /media/thomasrauter/Data1
例如,我运行了一个我通常运行的脚本,我已经知道它可以运行,并且它第一次就运行成功了,然后我再次使用另一个输入运行它,当它运行到应该处理的文件中途时,脚本本身、.sh
该目录中的另外两个脚本和一半的其他目录都消失了(它们不在垃圾箱中)。
我以前也遇到过类似的问题,目录中的所有内容都消失了。然后我fsck
在那个未安装的驱动器上运行,什么也没发生,但几天后(这些天在电脑和 Ubuntu 上工作)文件突然又出现了。
有时,当脚本将多个文件写入目录时,该目录在运行时不会显示这些文件ls
,并且在图形用户界面上,它显示正在加载但始终无法加载。即使我重新启动后,情况仍然如此。
抱歉,我无法描述一个简洁的问题,但我的问题基本上是你们中是否有人以前见过类似的东西(我真的认为它与 Nautilus 或 Nemo 有关),因为现在,我的 Ubuntu 感觉就像一座鬼屋。
编辑(感谢您指出我的问题):
ls -al /media/thomasrauter/
返回:
total 24
drwxr-x---+ 4 root root 4096 Dez 1 15:47 .
drwxr-xr-x 4 root root 4096 Jun 4 15:54 ..
drwxr-xr-x 2 root root 4096 Aug 19 10:24 Data
drwxrwxrwx 1 thomasrauter thomasrauter 12288 Dez 1 14:53 Data1
这是导致问题的脚本之一的代码(但它不是唯一的脚本,并且它以前总是能完成它的工作):
#!/bin/bash
# Check if eight arguments are provided
if [ "$#" -ne 7 ]; then
echo "Usage: bash $0 <seq_platform> <depth> <length_min> <length_max> <length_mean> <length_sd> <accuracy_mean>"
echo "bash simulate_reads.sh ONT 30 1000 100000 20000 10000 0.85"
echo "bash simulate_reads.sh PacBio 30 1000 60000 15000 5000 0.90"
exit 1
fi
# Assigning arguments to variables
seq_platform="$1"
depth="$2"
length_min="$3"
length_max="$4"
length_mean="$5"
length_sd="$6"
accuracy_mean="$7"
if [ "$seq_platform" == "ONT" ]; then
model='QSHMM-ONT.model'
elif [ "$seq_platform" == "PacBio" ]; then
model='QSHMM-RSII.model'
else
echo "Error: Only ONT and PacBio supported as seq platform."
exit 1
fi
# Check if the image exists locally
if [[ "$(docker images -q thomasrauter/pbsim3:1.0 2> /dev/null)" == "" ]]; then
# If the image doesn't exist locally, pull it from Docker Hub
docker pull thomasrauter/pbsim3:1.0
fi
# Create an array to store filenames
file_array=()
# Loop to find files ending with .fa or .fasta and add them to the array
for file in *.fa *.fasta; do
if [ -e "$file" ]; then # Check if file exists
file_array+=("$file")
fi
done
for fasta_filename in "${file_array[@]}"; do
echo -e "\n#####################################################################################\n\n"
echo -e"\nProcessing $fasta_filename"
output_dir_name="${fasta_filename%%.*}_${seq_platform}_pbsim3_output_$(date +"%Y-%m-%d_%H-%M-%S")"
docker run --name pbsim3 \
-v "$(pwd)/$fasta_filename":/pbsim3/input_files/input.fasta \
thomasrauter/pbsim3:1.0 \
pbsim --strategy wgs \
--method qshmm \
--qshmm data/"$model" \
--depth "$depth" \
--genome input_files/input.fasta
--length-min "$3" \
--length-max "$4" \
--length-mean "$5" \
--length-sd "$6" \
--accuracy-mean "$7"
docker cp pbsim3:"/pbsim3/output_files" "$(pwd)/$output_dir_name"
docker rm pbsim3 > /dev/null 2>&1
# Change to the specified directory
cd "$output_dir_name" || exit 1 # Exit if the directory change fails
# Create an array to store .fastq filenames
local_fastq_files=()
# Find all .fastq files and add them to the array
for local_file in *.fastq; do
if [ -e "$local_file" ]; then # Check if file exists
local_fastq_files+=("$local_file")
fi
done
# Concatenate all files in the array into a single .fastq file
local_combined_fastq="combined.fastq" # Name of the output file
cat "${local_fastq_files[@]}" > "$local_combined_fastq"
# Write a file with the used parameters
output_file="pbsim3_parameters.txt"
# Write to the file
{
echo "Input_fasta_file: $fasta_filename"
echo "Seq_platform: $seq_platform"
echo "Depth: $depth"
echo "Length_min: $length_min"
echo "Length_max: $length_max"
echo "Length_mean: $length_mean"
echo "Length_sd: $length_sd"
echo "Accuracy_mean: $accuracy_mean"
} > "$output_file"
cd .. || exit 1
echo "Simulation of the reads for the file $fasta_file completed. The files are in the dir $output_dir_name in the current working dir."
done
答案1
我现在知道了当时遇到的问题的解决方案。我遇到了一些系统级损坏,因为很久以前,当 Ubuntu 冻结时,我进行了硬关机(因为我不知道除此之外还能做什么)。重新安装 Ubuntu 后,一切都恢复正常。因此,我从中得到的教训是,如果出现非常奇怪的问题,而没有真正的解决方案,只需保存数据并重新设置一切,而不要花太多时间试图找出原因。