"Процесс, приостановленный с помощью Ctrl+Z" на самом деле является подмножеством "приостановленного процесса, который является дочерним для этой оболочки", и его легче отследить: это означает, что есть приостановленное фоновое задание.
В zsh вы можете проверить массив jobstates
.
if ((${(M)#jobstates:#suspended:*} == 0)); then
echo There are no suspended jobs
else
echo There are ${(M)#jobstates:#suspended:*} suspended jobs
fi
В bash или zsh, jobs -s
перечисляет только приостановленные задания.
echo "There are $(jobs -s | wc -l) suspended jobs"
Если вы бежите
strace -T sleep 2
вы увидите
nanosleep({tv_sec=2, tv_nsec=0}, NULL) = 0 <2.000230>
поэтому похоже, что потраченное время указано в секундах.
Из исходного кода:
if (Tflag) {
ts_sub(ts, ts, &tcp->etime);
tprintf(" <%ld.%06ld>",
(long) ts->tv_sec, (long) ts->tv_nsec / 1000);
}
Это означает, что время отображается в секундах, а микросекунды (рассчитываются из наносекундного значения )после запятой.
Если вы запустите команду strace
с флагом -c, она покажет вам таблицу, и время будет указано в секундах:
strace -c -p 3569 # 3569 is PID
strace: Process 3569 attached
^Cstrace: Process 3569 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
99.73 0.016000 8 1971 poll
0.16 0.000025 0 509 75 futex
0.06 0.000010 0 1985 1966 recvmsg
0.06 0.000009 0 2336 mprotect
0.00 0.000000 0 478 read
0.00 0.000000 0 13 write
0.00 0.000000 0 29 mmap
0.00 0.000000 0 9 munmap
0.00 0.000000 0 18 writev
0.00 0.000000 0 351 madvise
0.00 0.000000 0 1 restart_syscall
------ ----------- ----------- --------- --------- ----------------
100.00 0.016044 7700 2041 total
-c
Count time, calls, and errors for each system call and report a summary on program exit. On Linux, this attempts to show system time (CPU time spent running in the kernel) independent of wall clock time. If -c is used with -f or -F (below), only aggregate totals for all traced processes are kept.