Как добавить, что определенные каталоги к “updatedb” (определяют местоположение) пути поиска?

Можно просто проверить пользовательское использование ENV:

su -l user_name  -c "run_programm && env"

Или можно проверить env из дочернего процесса при помощи он - pid,

предположите, что Ваш pid дочернего процесса 24112 , затем просто проверьте env использование:

cat /proc/24112/environ
7
22.12.2015, 07:09
3 ответа
[

] В [] updateb.conf[] для этого нет возможности. Вам придётся организовать передачу опций в []updateb[] вручную.[

] [

]С помощью []updateb из GNU findutils[], pass []--localpaths[].[

] [
updatedb --localpaths '/ /media/win_c/somewhere/Music /media/win_c/somewhere/Photos'
] [

]С помощью []updateb из mlocate[], не появляется способа указать несколько корней или исключить каталог из обрезки, так что я думаю, что вы застряли с одной базой данных на каждый каталог. Установите переменную окружения []LOCATE_PATH[] в список БД:[

] [
updatedb --output ~/.media.mlocate.db --database-root /media/win_c/somewhere --prunepaths '/media/win_c/somewhere/Videos'

export LOCATE_PATH="/var/lib/mlocate/mlocate.db:$HOME/.media.mlocate.db"
]
4
27.01.2020, 20:18
[

] В реализации "mlocate" используйте опцию [] --database-root [], ничего не подрезая. В man-странице updateb(8):[

] [
-U, --database-root PATH
    Store only results of scanning the file system subtree rooted at
    PATH  to  the  generated  database.   The  whole  file system is
    scanned by default.
] [

]Но вам может понадобиться и отдельный выходной файл ([]--output[]). Я не уверен, что вы можете объединить обе базы данных (вы можете попробовать).[

] [

]Другие реализации могут иметь похожие опции.[

].
3
27.01.2020, 20:18

Попался, теперь понял.. или? mlocate не так просто, но это работает довольно хорошо для каждого -U, --база данных -корневой ПУТЬ в mlocate кажется, вам нужна новая БД!?

Использование:<script>'термин'

#!/bin/dash


dbfile="$HOME/.recordings.locate.db";
daysToUpdate=7;
create=0;

# list of paths
paths="/master/media/music /media/recordings";

# list of terms
termA=$( echo "$1" | sed 's/ /\\ /g' );
termB=$( echo "$1" | sed 's/ /_/g' );

# realtime scan:
#find $paths -iname "*$termA*" -o -iname "*$termB*"


# -- 

if [ ! -f "$dbfile" ]; then
    create=1;
fi


if [ "$create" -ne 1 ] && [ $(find "$dbfile" -mtime +$daysToUpdate -print) ];
then
    echo "File $dbfile exists and is older than $daysToUpdate days"
    create=1;
fi


if [ "$create" = "1" ] ; then
    echo "Update custom dbs please wait...";
    touch "$dbfile"; # mark for inside actions
    cnt=0;
    for path in $paths
    do
        echo "scan: $path to $dbfile.$cnt";
        updatedb -l 0 -U $path -o "$dbfile.$cnt";
        cnt=$(expr $cnt + 1);
    done
fi


cnt=0;
for path in $paths
do
    echo "scan: $path of cache $dbfile.$cnt";
    locate -d "$dbfile.$cnt" $termA
    locate -d "$dbfile.$cnt" $termB
    cnt=$(expr $cnt + 1);
done
0
27.01.2020, 20:18

Теги

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