Initial commit: HPR Knowledge Base MCP Server
- MCP server with stdio transport for local use - Search episodes, transcripts, hosts, and series - 4,511 episodes with metadata and transcripts - Data loader with in-memory JSON storage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
123
hpr_transcripts/hpr2003.txt
Normal file
123
hpr_transcripts/hpr2003.txt
Normal file
@@ -0,0 +1,123 @@
|
||||
Episode: 2003
|
||||
Title: HPR2003: Using the Incron file watching daemon
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr2003/hpr2003.mp3
|
||||
Transcribed: 2025-10-18 13:10:29
|
||||
|
||||
---
|
||||
|
||||
This is HPR episode 2003 entitled, using the Incron file watching demon and in part of the series bash-crypting.
|
||||
It is hosted by me using it and in about 12 minutes long.
|
||||
The summary is, I briefly introduce the Incron file watching demon and give an example of how I use it.
|
||||
This episode of HPR is brought to you by an honesthost.com.
|
||||
Get 15% discount on all shared hosting with the offer code HPR15. That's HPR15.
|
||||
Better web hosting that's honest and fair at an honesthost.com.
|
||||
Hey HackerPupWook Radio, this is Be Easy once again signing in.
|
||||
Coming in with another episode, this time I'm going to be talking about the file watching demon called Incron.
|
||||
Now I said I would do something with this one before and now I'm going to do it because it's a pretty
|
||||
cool utility and I don't use it all the time but when I do it's always very useful and I can see
|
||||
how it has lots of applications, situations where the haven't thought of. So with no further ado,
|
||||
here we go. So from the man page, Incron or more specifically Incron tab, which related to
|
||||
Cron, Incron tab is a file that contains instructions to the Incron D Damon of the general form.
|
||||
Run this command on these files, events. There are two categories of tables, system tables with
|
||||
fruit privileges and user tables with user privileges. And so instead of reading the entire
|
||||
rest of the man page, I'll just let you read it. But if you're installing it, it's usually just
|
||||
called Incron and whatever repository you're looking at. As far as I know, it's only available for
|
||||
Linux. I'm not exactly sure about BSD. I could probably look that up. But it is a very useful tool.
|
||||
So one thing they can do with it and something I use it for is to automatically have tasks happen
|
||||
when a file is either created, modified, deleted, moved, changed status. And they're the format
|
||||
goes the path, the mask and the command. Now the mask is usually what you want to do.
|
||||
And it's usually the event symbols. And so the event symbols are in access, which means when
|
||||
the file is accessed in a tribe, which is when metadata about it, the file change, like permissions
|
||||
or D timestamps, and close right and no right and create and delete and delete shelf and modify
|
||||
and move shelf and move from and move to and open. And then there's in all events and and don't
|
||||
follow in one shot and in only there. And those are all separated. All those different words are
|
||||
separated with underscores. But the one I'm going to talk about right now is Increate. And so
|
||||
that means when a new file is in the directory, do something to it. And what I use it for
|
||||
in this example is I have a Raspberry Pi 2 with PanDoc installed. And I've talked about PanDoc
|
||||
before. It's a utility that is used to create multiple types of documents from other types
|
||||
of documents. For instance, from markdown to HTML or to PDF or from from wiki.no, you know,
|
||||
the wiki.no to PDF or HTML or even stuff like reveal.js slides or slidey.js slides.
|
||||
I use it all the time. And I have lots of other computers that I don't necessarily want install
|
||||
PanDoc on because PanDoc itself is not that big. But if it's depending on what distribution you
|
||||
download, you download it with sometimes you have to install all of Haskell with it. And other times
|
||||
you have to also install if you want to use PDFs, you always have to install text live. And the
|
||||
minimum amount of text live is like a half a gig. So if you're hard up on hard drive space,
|
||||
you might not want such a heavy program. Like I have two computers that I use all the time. Both
|
||||
of them have 32 gig SSDs. I know I could put faster ones in bigger ones in there. I have no
|
||||
reason to. But anyway, so after that, there is some wild cards that you can use to identify the
|
||||
files and the directories that the wild cards are dollar sign at, which is the watch file system.
|
||||
So if you're going to refer to the path of it in the command that you're writing, it is dollar sign
|
||||
at symbol or on the American keyboard is the shift to. And then you also have the dollar sign
|
||||
pound or dial sign, you know, the little tic-tac-toe looking thing, which is the shift three. And that is
|
||||
the event related file name. So if you want to the full the full path of a file, it would be
|
||||
dollar sign at slash dollar sign pound. And then there's also dollar sign percent and dollar sign
|
||||
ampersand and those for or for event tags. And I haven't used event tags. I haven't had to use
|
||||
for them yet. So I'm not going to talk about them because I'm not exactly sure how they work and
|
||||
how best to use them. And the main page it has to be examples, but it's kind of a generic example.
|
||||
I want to go over a specific example of how I use it. So in particular, I have a couple of folders
|
||||
on my Raspberry Pi inside of a folder and on the inside of the user's home folder. There's a
|
||||
directory called docs inside of docs. There's all these other folders. One for letters, one for
|
||||
notes, one for things I will turn to PDFs, one for reveal.js slides, another one for standard
|
||||
operating procedures, and another one for validation protocols, some of the things I do for work.
|
||||
In any one of those, there might be a I will throw a markdown file because as I've said,
|
||||
another episode, I write almost exclusively in markdown. And I have developed these really
|
||||
specific templates that all the documents that I want to write go into. And they, if it's a note,
|
||||
I always want to output it in a certain format. If it's a standard operating procedure, I always
|
||||
want it in the same format. And it's annoying to have to reformat those. And I can use templates and
|
||||
then copy and paste stuff in there. But it's anyone working with where processes knows that,
|
||||
copying paste and then updating the styles is not very fast. If you want to do it really quickly,
|
||||
and you want to do it consistently the same way every time. So instead, I also have one for
|
||||
letters. If I want to write a letter that needs to be mailed and that's a professional format
|
||||
at one, I have one for that too, which uses, which is a PDF, which inserts a signature and a whole
|
||||
bunch of other stuff. So it's pretty cool. But what I do is I write the pen doc command in
|
||||
a.sh file. So in the shell command, and all I have to do inside of my cron tab. So to use,
|
||||
to make a new cron tab job, you have to get to the cron table in cron table, which is just like
|
||||
cron. So if I keep on mixing up, that's why it's very similar to cron. So if you ever have used
|
||||
cron before, which is the kind of the scheduler. Instead of going cron tab dash A, you do
|
||||
in cron tab dash A. And that will bring you to your your cron your in contact. So for instance,
|
||||
on my first line of my in cron table, I have slash home slash user slash docs slash PDF. So in that
|
||||
directory, the next command is in underscore create. And then I say slash home slash user mkpdf.sh
|
||||
And then I have dollar sign at slash dollar sign pound, which if I read it all the way out, it's
|
||||
in the director of slash home slash users slash docs slash PDF. When a file is created, run the
|
||||
command mkpdf.sh on the file of the full path. And so what that file looks like is very simply,
|
||||
it's a bash script that has file name and I get the base name of the file. So you know,
|
||||
so my mkpdf takes one argument, which is the file name. So I get the base name of the file. I change
|
||||
the I change to that md to dot PDF. I run a markdown command that tells about the geometry of the
|
||||
page and the fonts and anything else and and the template that I use. And then I say dash O, put it
|
||||
into the slash home slash pie slash docs slash done directory and then remove that original file.
|
||||
I probably could move that original file to a completed folder so that if everyone's
|
||||
to do it again, I could and maybe that's something I'll do in the future. But for now, I just remove it
|
||||
so that when I go back and look at the directory, I can tell that it's done. Because if you don't,
|
||||
you could look in the done folder to see if it's done. But it's for me, it's just easier to look
|
||||
in the pending folder to see how many have already completed and how many still need to be completed.
|
||||
And so, you know, it's a pretty simple thing. So after I throw a file in there, the job starts to
|
||||
run and if you do a tail F on the slash bar slash syslog, you can see that there's an event
|
||||
in the syslog that says in crowns running and it says the command name and the file name. And then
|
||||
so you know that it's working. Or if you open up top or each top, you'll see that the command starts
|
||||
in and then it'll start running. And so what I usually do is I have the root directory, so the
|
||||
home directory of that user on the Raspberry Pi mounted to my different workstations.
|
||||
And when I have a document that I want to throw into one of those folders, I just open it up,
|
||||
drag it from where I'm working on and drag it in there, or you know, control C and then control V
|
||||
in the other directory. Depending on what I'm doing and how complicated it is, not big the file is,
|
||||
come back a couple seconds or a couple minutes later. Usually no longer than 60 seconds.
|
||||
And then pick up the file in the drop off spot in the dead folder and email it, continue to work
|
||||
on if there's post processing that I want to do on it or anything else that my job might acquire.
|
||||
It's really convenient. It allows it's doing, it's kind of the Unix philosophy of have, you know,
|
||||
do one job really well. So that Raspberry Pi is pretty much only doing a couple of little
|
||||
medial tasks like running Pandak, running a couple of little things on in-crond and crond.
|
||||
That's all days in-crond and crond jobs. And you know, it's very useful. There's, if you think
|
||||
about the nature of this command, it's very powerful. And if you've ever used Windows Systems,
|
||||
and you've ever tried to use a Demon or Watcher on Windows Systems, it's not a straightforward
|
||||
and to get something that is this straightforward and the simple, you should cost a pretty good amount
|
||||
of money. So I really appreciate having a command like this in my, just a simple install command
|
||||
the way from any Linux distribution I have. And I appreciate your time once again on Hacker Public
|
||||
Radio. This is easy signing off.
|
||||
You've been listening to Hacker Public Radio at Hacker Public Radio dot org.
|
||||
We are a community podcast network that releases shows every weekday, Monday through Friday.
|
||||
Today's show, like all our shows, was contributed by an HBR listener like yourself.
|
||||
If you ever thought of recording a podcast, then click on our contribute link to find out
|
||||
how easy it really is. Hacker Public Radio was founded by the digital dog pound and the
|
||||
infonomicum computer club and is part of the binary revolution at binrev.com. If you have
|
||||
comments on today's show, please email the host directly, leave a comment on the website
|
||||
or record a follow-up episode yourself. Unless otherwise stated, today's show is released on
|
||||
creative comments, attribution, share a light, 3.0 license.
|
||||
Reference in New Issue
Block a user