SINCE(1)

πŸ’– SINCE(1) πŸ’–

ok so bestie, welcome to the User Manuals section, and this little icon right here is called since β€” yes the man page is named SINCE(1), we love a dramatic all-caps moment πŸ’…


✨ NAME ✨

since β€” display content of a file since the last time πŸ•°οΈ


🌸 SYNOPSIS 🌸

since [-aefhlmnqvxz] [-d seconds] [-s file] files

πŸ¦‹ DESCRIPTION πŸ¦‹

ok so since is a utility designed to monitor log files. no cap, that's the whole job. πŸ‘‘

since is similar to tail(2) as it also displays information appended to a file. however β€” and this is the main character plot twist β€” since only displays the data which has been added since the last time since was run. so it remembers. it keeps receipts. it's that friend who actually read the group chat. 😌

and if since is run on a particular file for the first time, then the entire file is displayed. the whole thing. no holding back. πŸ’–


⭐ EXAMPLE ⭐

since /var/log/apache/{access,error}_log > /dev/null
lynx --dump http://localhost/ > /dev/null
since /var/log/apache/{access,error}_log

it's giving "poke the server, then see what it had to say about it" 🫢


πŸ’… OPTIONS πŸ’…

  • -a β€” Make updates to the since state files atomic. This option configures since to use a temporary file and a rename(2) instead of updating the state file in situ. no half-written state files, we do clean handoffs only ✨
  • -d seconds β€” Specify the number of integer seconds to wait between polling files for changes. This option is only relevant in conjunction with the -f option and if the inotify mechanism is not being used. so like, patience settings πŸ•
  • -e β€” Print the header lines to standard error instead of standard output. headers go to the other door πŸšͺ
  • -f β€” Follow the specified files. This option is analogous to tail -f as the files are also polled for changes until the process is interrupted. it just. keeps. watching. πŸ‘€ (interrupt it when you're done, bestie)
  • -h β€” Print a terse help message. short king behavior πŸ“
  • -l β€” Relaxed mode. If some data files are inaccessible since will not fail completely. it's not gonna crash out over one inaccessible file, it's got chill πŸ’†
  • -m β€” Disable mmap(2), use read(2) instead to access state and data files. Note that for certain smaller io operations read(2) may be used even if this option has not been given. plot twist: sometimes it does this anyway πŸ™ˆ
  • -n β€” Do not update the .since file which keeps track of file growth. no memory today, we're living in the moment πŸŽ€
  • -q β€” Make the utility operate more quietly. 🀫
  • -s filename β€” Specify the state file explicitly. Using this option will also disable the use of fallback state files. you pick the file, and there is no plan b, periodt πŸ’…
  • -v β€” Increase the verbosity. This option can be given multiple times. more -v = more talking πŸ—£οΈ
  • -x β€” Ignore file arguments which have compressed extensions. zip? gz? not today bestie 🚫
  • -z β€” Discard output. Similar to redirecting the output to /dev/null, but faster. If used in conjunction with the -f option, only the initial output will be discarded. so with -f it's like "throw away the first dump, then actually show me the rest" πŸ—‘οΈβœ¨

πŸŽ€ FILES πŸŽ€

  • .since β€” State file recording the length of the previously displayed files. The location of the file can be set on the command line using the -s option. If this option is not given, since will check the SINCE environment variable for the location of the state file. If the SINCE environment variable has not been set since will use the HOME environment variable and store the information in the file $HOME/.since. If the HOME variable is not set, since will use a getpwuid(3) lookup. If all these fail will use the file /tmp/since.

it's a whole chain of "okay well where do we put it then" β€” -s, then SINCE, then $HOME/.since, then getpwuid(3), then finally /tmp/since. the state file always finds a home πŸ πŸ’œ


πŸ’€ BUGS πŸ’€

since uses the inode of a file as its key, if that inode is recycled since will get confused. 😭

since is not particularly efficient when storing or looking up the stat(2) information. Functionality equivalent to since can probably be achieved with a number of trivial shell scripts. okay it said it, not me πŸ™ˆ


πŸ‘‘ COPYING πŸ‘‘

since may only be used, distributed and modified in accordance with the terms of the GPL (GNU General Public License) version 3 or newer as published by the FSF (Free Software Foundation). legal bestie behavior, respect the license 🫢


🌈 SEE ALSO 🌈

tail(1), stat(2).


and that's the whole page, bestie πŸ’– this one's from the Linux corner of the world, dated JULY 1998, and the page signs off as SINCE(1). yeah it's old. it still ate. mwah πŸ’…βœ¨