Note: This answer is an extension of artistoex's answer.
This command should display all currently running commands executed by the current user and started within the last 60 seconds:
ps x --sort -start_time -U YOURUSERNAME -o start,command | \
awk '$1>=recently&&$1<=now' \
recently=$(date --date='60 seconds ago' +%T) now=$(date +%T) | sed 1,1d
To use this command, click on an icon or menu item to execute a command and while the program that was just opened is still running, execute the above command. Remember to replace
YOURUSERNAME with the username of your current user.
ps will display currently running processes. Explanation of
x: includes processes not executed through a terminal (actually a
-t '?' would display only processes not associated with a terminal.
--sort -start_time: sort the output by the time the process started (descending order)
-U YOURUSERNAME: Replacing YOURUSERNAME with your username will show only processes executed by your user. This restriction can be removed if needed.
-o start,command: Display two columns in the output: the start time of the process and the command that was executed
awk is used here to only show processes executed recently. Explanation of
$1>=recently&&$1<=now: Restrict the output to processes that were executed within the last 60 seconds. To change this time frame, modify the next argument (
recently variable assignment)
recently=$(date --date='60 seconds ago' +%T): set the
recently used in the previous argument to 60 seconds ago in
HH:MM:SS format (
ps time format).
now=$(date +%T): set the
now to the current time (this is to exclude processes executed less than 24 hours ago that would look like they executed in the future)
sed 1,1d to delete the first line of output because it will show the currently executing command, which is pointless to display.
Keep in mind: Using
ps to find out which process was executed will not work as expected for certain programs. For example, if you click on a Firefox shortcut but Firefox is already running, a new process will not be created and the start time of the old process will not be changed. However, this method does work fairly well for many programs.