Команда чтения iozone не работает

Если вам нужно временно внести что-то в черный список или вы по какой-то причине предпочитаете использовать для этого Grub, вы также можете изменить параметры загрузки ядра, чтобы внести модуль в черный список:

vmlinuz ro rhgb quiet rdblacklist=<modulename>

Это можно сделать постоянным, добавив в /etc/default/grub вот такую строку:

GRUB_CMDLINE_LINUX="<existing boot options> rdblacklist=<modulename>"

А затем обновив конфигурацию загрузки с помощью

grub2-mkconfig -o /boot/grub2/grub.cfg

Однако обычно это должно быть последним средством для внесения чего-либо в черный список.

0
06.05.2019, 21:41
2 ответа

Как правило, не рекомендуется использовать выходные данные lsв качестве входных данных.

Вы можете добиться желаемого с помощью небольшого скрипта:

#! /bin/sh
# file counter 
cnt=0

# for each file (replace *.* by *.mp3 to restrict to some files)
for i in *.*
do 
    # create a number for 0 to 9 from the counter
    a=$(( cnt%10 ))

    # for 8 files on 10,
    if [ $a -lt 8 ]
    then
        # move file to train folder (think to remove `echo`)
        echo mv "$i" train/

    # for one file on 10 (a is 8)
    elif [ $a -lt 9 ]
    then
        # move file to dev folder (think to remove `echo`)
        echo mv "$i" dev/

    # for one file on 10 (a is 9)
    else
        # move file to test folder (think to remove `echo`)
        echo mv "$i" test/
    fi 
    # and update the counter
    cnt=$((cnt+1))
done
0
28.01.2020, 03:43

Использование такой оболочки, какbash:

#!/bin/bash

# Get all names.
# This assumes that *.mp3 matches only the things that we'd like to move.
names=( *.mp3 )

# Create our destination directories.
mkdir train dev test

# Calculate some numbers...

n=${#names[@]}           # 100% of the files

# Six files at least are needed...
# (or one of the directories will be empty)
if [ "$n" -lt 6 ]; then
    printf 'Only %d files\n' "$n"
    exit 1
fi

n80=$(( (80*n)/100  ))   # 80% of the files
n10=$(( (n - n80)/2 ))   # 10% of the files

# Move the files...

mv "${names[@]:0:n80}"   train # Move the 80%
mv "${names[@]:n80:n10}" dev   # Move the 10%
mv "${names[@]:n80+n10}" test  # Move the rest

Это читает имена файлов, которые мы хотели бы переместить в массив с именем names. Предполагается, что используемый шаблон *.mp3будет соответствовать только и всем интересующим нас именам (модифицировать этот шаблон под свои нужды ).

Затем вычисляются длины 80% и 10% этого массива.

Перемещение файлов выполняется с помощью фрагментов массива (вbash). Срез ${arr[@]:offset:length}представляет собой срез от нуля -, основанного на смещении offsetдлины length. Если аргумент lengthотсутствует (, как в последнем вызове mv), срез выполняется до конца массива.

Количество файлов, которые попадают в каждый каталог, очевидно, будет немного приблизительным из-за того, что мы не готовы разбивать файлы на два (целочисленных арифметических ). Каталог test, скорее всего, получит на один файл больше, чем dev, если число файлов не делится без остатка.

Это также зависит от того, что имена файлов достаточно короткие, чтобы 80% файлов можно было переместить за одну операцию. Если это не так, вам придется изменить последние три строки (mvстроки )на

for name in "${names[@]:0:n80}"; do
    mv "$name" train
done
for name in "${names[@]:n80:n10}"; do
    mv "$name" dev
done
for name in "${names[@]:n80+n10}"; do
    mv "$name" test
done
0
28.01.2020, 03:43

Теги

Похожие вопросы