Нет, блочное устройство не знает, какой процесс или пользователь вызвал доступ к диску. Фундаментальная причина, по которой он не знает, состоит в том, что это понятие -плохо определено. Прямой связи между доступом к диску и доступом к файлу нет. Например, если несколько процессов читают из одного и того же места в одном и том же файле практически в одно и то же время, то у них обоих может быть ожидающий запрос на чтение, который просачивается на оборудование. Другой пример: буферизованная запись может иметь место после того, как процесс, активность которого вызвала запись, умерла.
да, используйтеshift
#!/bin/bash
echo "• $(date +%Y.%m.%d.%H.%M.%S) • " >> "$1"
log="$1"
shift
printf "%s" "$*" >> "$log"
см. человека баш
shift [n]
The positional parameters from n+1... are renamed to $1.... Parameters represented by the numbers $# down to $#-n+1 are unset. n must be a non-negative number less than or equal to $#. If n is 0, no pa rameters are changed. If n is not given, it is assumed to be 1.