Unix 11i v2 Script to detect new files within directory
Clash Royale CLAN TAG#URR8PPP
I was hoping someone can point me in the right direction. I would like to create a script to check for new files (files with today's date) within a directory and then print the results to a text file. Could I use cron
or bash
?
edit:
Updated original thread. I tried the following on my Linux Mint VM and I got it to work. The only problem is:
1) when i create a new file (using "sudo vi newtextfile.txt" and then ":w") i receive the notification email 4 times.
2) am i triggering multiple IN_CREATE events by creating a new file using the method i mentioned above?
/xyz/jon >>>
total 12
786436 drwxr-xr-x 2 root root 4096 Jul 13 20:43 .
786434 drwxr-xr-x 4 root root 4096 Jul 13 19:45 ..
786441 -rwxr-xr-x 1 root root 48 Jul 13 20:32 mylogger.sh
786437 -rw-r--r-- 1 root root 0 Jul 13 20:22 mylogtoday.txt
"incron.table-jonincron" >>>
/xyz/client IN_CREATE /xyz/jon/mylogger.sh
/xyz/jon/mylogger.sh >>>
sudo mail -s "testing script" emailaddress@domain.com
cron
add a comment |
I was hoping someone can point me in the right direction. I would like to create a script to check for new files (files with today's date) within a directory and then print the results to a text file. Could I use cron
or bash
?
edit:
Updated original thread. I tried the following on my Linux Mint VM and I got it to work. The only problem is:
1) when i create a new file (using "sudo vi newtextfile.txt" and then ":w") i receive the notification email 4 times.
2) am i triggering multiple IN_CREATE events by creating a new file using the method i mentioned above?
/xyz/jon >>>
total 12
786436 drwxr-xr-x 2 root root 4096 Jul 13 20:43 .
786434 drwxr-xr-x 4 root root 4096 Jul 13 19:45 ..
786441 -rwxr-xr-x 1 root root 48 Jul 13 20:32 mylogger.sh
786437 -rw-r--r-- 1 root root 0 Jul 13 20:22 mylogtoday.txt
"incron.table-jonincron" >>>
/xyz/client IN_CREATE /xyz/jon/mylogger.sh
/xyz/jon/mylogger.sh >>>
sudo mail -s "testing script" emailaddress@domain.com
cron
Wellbash
is a shell scripting language and interpreter; that's as good a place as any to start with writing a shell script.
– HalosGhost
Jul 13 '14 at 21:31
So you want to get a list of all files modified since midnight? If the directory has directories in it, do you want to look through them, too?
– Mark Plotnick
Jul 15 '14 at 8:29
no, i want to check for new files within a directory /xyz/client, if there is a new file (file was created today), then either send an email notification (as i did above) or print a list of files within /xyz/client as a text file to a separate directory /xyz/jon
– jes516
Jul 15 '14 at 12:23
OK. By "created today", do you mean "did not exist prior to midnight but exists now"? Unix (except on Mac OS X and on ext4 filesystems on Linux) doesn't keep track of when a file was created. For your HP-UX system, it sounds like what you want is to create a list of files at midnight, then create another list of files later in the day, and compare the two lists. Does that sound right?
– Mark Plotnick
Jul 15 '14 at 14:18
yes, if we cannot monitor/track when new files are created within that directory (/xyz/client), then that sounds like the way to go (compare: yesterdays file prior to midnight vs todays file after midnight) and send an email notification when there are differences between the two files. if you can help me out with this, i would highly appreciate it. We are on HP-UX B.11.23 U 9000/800 if it helps... and i am in the process of setting up mailx for use in command line for script..
– jes516
Jul 15 '14 at 19:46
add a comment |
I was hoping someone can point me in the right direction. I would like to create a script to check for new files (files with today's date) within a directory and then print the results to a text file. Could I use cron
or bash
?
edit:
Updated original thread. I tried the following on my Linux Mint VM and I got it to work. The only problem is:
1) when i create a new file (using "sudo vi newtextfile.txt" and then ":w") i receive the notification email 4 times.
2) am i triggering multiple IN_CREATE events by creating a new file using the method i mentioned above?
/xyz/jon >>>
total 12
786436 drwxr-xr-x 2 root root 4096 Jul 13 20:43 .
786434 drwxr-xr-x 4 root root 4096 Jul 13 19:45 ..
786441 -rwxr-xr-x 1 root root 48 Jul 13 20:32 mylogger.sh
786437 -rw-r--r-- 1 root root 0 Jul 13 20:22 mylogtoday.txt
"incron.table-jonincron" >>>
/xyz/client IN_CREATE /xyz/jon/mylogger.sh
/xyz/jon/mylogger.sh >>>
sudo mail -s "testing script" emailaddress@domain.com
cron
I was hoping someone can point me in the right direction. I would like to create a script to check for new files (files with today's date) within a directory and then print the results to a text file. Could I use cron
or bash
?
edit:
Updated original thread. I tried the following on my Linux Mint VM and I got it to work. The only problem is:
1) when i create a new file (using "sudo vi newtextfile.txt" and then ":w") i receive the notification email 4 times.
2) am i triggering multiple IN_CREATE events by creating a new file using the method i mentioned above?
/xyz/jon >>>
total 12
786436 drwxr-xr-x 2 root root 4096 Jul 13 20:43 .
786434 drwxr-xr-x 4 root root 4096 Jul 13 19:45 ..
786441 -rwxr-xr-x 1 root root 48 Jul 13 20:32 mylogger.sh
786437 -rw-r--r-- 1 root root 0 Jul 13 20:22 mylogtoday.txt
"incron.table-jonincron" >>>
/xyz/client IN_CREATE /xyz/jon/mylogger.sh
/xyz/jon/mylogger.sh >>>
sudo mail -s "testing script" emailaddress@domain.com
cron
cron
edited Jul 15 '14 at 12:16
jes516
asked Jul 13 '14 at 21:01
jes516jes516
3331721
3331721
Wellbash
is a shell scripting language and interpreter; that's as good a place as any to start with writing a shell script.
– HalosGhost
Jul 13 '14 at 21:31
So you want to get a list of all files modified since midnight? If the directory has directories in it, do you want to look through them, too?
– Mark Plotnick
Jul 15 '14 at 8:29
no, i want to check for new files within a directory /xyz/client, if there is a new file (file was created today), then either send an email notification (as i did above) or print a list of files within /xyz/client as a text file to a separate directory /xyz/jon
– jes516
Jul 15 '14 at 12:23
OK. By "created today", do you mean "did not exist prior to midnight but exists now"? Unix (except on Mac OS X and on ext4 filesystems on Linux) doesn't keep track of when a file was created. For your HP-UX system, it sounds like what you want is to create a list of files at midnight, then create another list of files later in the day, and compare the two lists. Does that sound right?
– Mark Plotnick
Jul 15 '14 at 14:18
yes, if we cannot monitor/track when new files are created within that directory (/xyz/client), then that sounds like the way to go (compare: yesterdays file prior to midnight vs todays file after midnight) and send an email notification when there are differences between the two files. if you can help me out with this, i would highly appreciate it. We are on HP-UX B.11.23 U 9000/800 if it helps... and i am in the process of setting up mailx for use in command line for script..
– jes516
Jul 15 '14 at 19:46
add a comment |
Wellbash
is a shell scripting language and interpreter; that's as good a place as any to start with writing a shell script.
– HalosGhost
Jul 13 '14 at 21:31
So you want to get a list of all files modified since midnight? If the directory has directories in it, do you want to look through them, too?
– Mark Plotnick
Jul 15 '14 at 8:29
no, i want to check for new files within a directory /xyz/client, if there is a new file (file was created today), then either send an email notification (as i did above) or print a list of files within /xyz/client as a text file to a separate directory /xyz/jon
– jes516
Jul 15 '14 at 12:23
OK. By "created today", do you mean "did not exist prior to midnight but exists now"? Unix (except on Mac OS X and on ext4 filesystems on Linux) doesn't keep track of when a file was created. For your HP-UX system, it sounds like what you want is to create a list of files at midnight, then create another list of files later in the day, and compare the two lists. Does that sound right?
– Mark Plotnick
Jul 15 '14 at 14:18
yes, if we cannot monitor/track when new files are created within that directory (/xyz/client), then that sounds like the way to go (compare: yesterdays file prior to midnight vs todays file after midnight) and send an email notification when there are differences between the two files. if you can help me out with this, i would highly appreciate it. We are on HP-UX B.11.23 U 9000/800 if it helps... and i am in the process of setting up mailx for use in command line for script..
– jes516
Jul 15 '14 at 19:46
Well
bash
is a shell scripting language and interpreter; that's as good a place as any to start with writing a shell script.– HalosGhost
Jul 13 '14 at 21:31
Well
bash
is a shell scripting language and interpreter; that's as good a place as any to start with writing a shell script.– HalosGhost
Jul 13 '14 at 21:31
So you want to get a list of all files modified since midnight? If the directory has directories in it, do you want to look through them, too?
– Mark Plotnick
Jul 15 '14 at 8:29
So you want to get a list of all files modified since midnight? If the directory has directories in it, do you want to look through them, too?
– Mark Plotnick
Jul 15 '14 at 8:29
no, i want to check for new files within a directory /xyz/client, if there is a new file (file was created today), then either send an email notification (as i did above) or print a list of files within /xyz/client as a text file to a separate directory /xyz/jon
– jes516
Jul 15 '14 at 12:23
no, i want to check for new files within a directory /xyz/client, if there is a new file (file was created today), then either send an email notification (as i did above) or print a list of files within /xyz/client as a text file to a separate directory /xyz/jon
– jes516
Jul 15 '14 at 12:23
OK. By "created today", do you mean "did not exist prior to midnight but exists now"? Unix (except on Mac OS X and on ext4 filesystems on Linux) doesn't keep track of when a file was created. For your HP-UX system, it sounds like what you want is to create a list of files at midnight, then create another list of files later in the day, and compare the two lists. Does that sound right?
– Mark Plotnick
Jul 15 '14 at 14:18
OK. By "created today", do you mean "did not exist prior to midnight but exists now"? Unix (except on Mac OS X and on ext4 filesystems on Linux) doesn't keep track of when a file was created. For your HP-UX system, it sounds like what you want is to create a list of files at midnight, then create another list of files later in the day, and compare the two lists. Does that sound right?
– Mark Plotnick
Jul 15 '14 at 14:18
yes, if we cannot monitor/track when new files are created within that directory (/xyz/client), then that sounds like the way to go (compare: yesterdays file prior to midnight vs todays file after midnight) and send an email notification when there are differences between the two files. if you can help me out with this, i would highly appreciate it. We are on HP-UX B.11.23 U 9000/800 if it helps... and i am in the process of setting up mailx for use in command line for script..
– jes516
Jul 15 '14 at 19:46
yes, if we cannot monitor/track when new files are created within that directory (/xyz/client), then that sounds like the way to go (compare: yesterdays file prior to midnight vs todays file after midnight) and send an email notification when there are differences between the two files. if you can help me out with this, i would highly appreciate it. We are on HP-UX B.11.23 U 9000/800 if it helps... and i am in the process of setting up mailx for use in command line for script..
– jes516
Jul 15 '14 at 19:46
add a comment |
2 Answers
2
active
oldest
votes
Do you want something that monitors a directory? incron can be quite handy for that:
1. Install incron from a repo
2. Enable incrond:
sudo systemctl enable incrond.service
sudo systemctl start incrond.service
3.Create appropriate incrontab:
incrontab -e
and add as content:
/path/to/watch IN_CREATE /path/to/mylogger.sh $@/$#
4.Create the logger script:
cat <<EOF>> /path/to/mylogger.sh
#!/bin/bash
echo $1 >> /path/to/logfile
EOF
chmod +x /path/to/mylogger.sh
Thats it.
2
Given that the parent is talking about "Unix 11i v2", I assume that he is talking of HP-UX, which doesn't have inotify (and thus incron) nor systemd, so your answer wouldn't work for him. Unless you're suggesting he should change his OS...
– user60039
Jul 14 '14 at 0:03
hi user60039, you are correct, I am using HP-UX ...
– jes516
Jul 14 '14 at 0:51
add a comment |
Hello I was hopping someone with better skill could answer. HP-UX has quite an old System V toolbox so you will not have the recent GNU tools.
HP-UX posix shell, which is /usr/bin/sh
is very close to ksh93. So you can compare the age of two files with [[ file1 -nt file2 ]]
wich returns true if file1
is newer than file2
. Don't use /usr/bin/ksh
on HP-UX it is a very old standard korn-shell (perhaps 1982).
Here is a simple script that you can run periodically. It should be hardened better to support files with specials characters in the names and other possible errors but I'm not good at that.
The files being watched are in DIR, the new files list is /tmp/newfile. The list is created while comparing all the file in DIR to the youngest file found during the last run so it supports new files being created while it runs.
The script does not support multiple execution at the same time, you may have to implement locks or to space each execution with enough time.
#!/usr/bin/sh
previous=/tmp/previous
new=/tmp/newfiles
DIR=/tmp/aa
if [[ ! -s $new ]]
then
mv "$new" "$previous"
fi
if [[ ! -f "$previous" ]]
then
ls -rt "$DIR" > "$new"
exit
fi
ref=$(tail -1 "$previous")
if ! cd "$DIR"
then
echo cannot cd "$DIR"
exit 1
fi
ls -rt | while read file
do
if [[ "$file" -nt "$ref" ]]
then
echo "$file"
fi
done > "$new"
You could run it in cron, for instance :
every five minutes (note that hp-ux crontab do not support *5 syntax)
0,5,10,15,20,25,30,35,40,45,55 * * * * /myscript.sh >>/var/adm/myscript.log 2>&1
every hour
0 * * * * /myscript.sh >>/var/adm/myscript.log 2>&1
once a day
0 0 * * * /myscript.sh >>/var/adm/myscript.log 2>&1
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f144367%2funix-11i-v2-script-to-detect-new-files-within-directory%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Do you want something that monitors a directory? incron can be quite handy for that:
1. Install incron from a repo
2. Enable incrond:
sudo systemctl enable incrond.service
sudo systemctl start incrond.service
3.Create appropriate incrontab:
incrontab -e
and add as content:
/path/to/watch IN_CREATE /path/to/mylogger.sh $@/$#
4.Create the logger script:
cat <<EOF>> /path/to/mylogger.sh
#!/bin/bash
echo $1 >> /path/to/logfile
EOF
chmod +x /path/to/mylogger.sh
Thats it.
2
Given that the parent is talking about "Unix 11i v2", I assume that he is talking of HP-UX, which doesn't have inotify (and thus incron) nor systemd, so your answer wouldn't work for him. Unless you're suggesting he should change his OS...
– user60039
Jul 14 '14 at 0:03
hi user60039, you are correct, I am using HP-UX ...
– jes516
Jul 14 '14 at 0:51
add a comment |
Do you want something that monitors a directory? incron can be quite handy for that:
1. Install incron from a repo
2. Enable incrond:
sudo systemctl enable incrond.service
sudo systemctl start incrond.service
3.Create appropriate incrontab:
incrontab -e
and add as content:
/path/to/watch IN_CREATE /path/to/mylogger.sh $@/$#
4.Create the logger script:
cat <<EOF>> /path/to/mylogger.sh
#!/bin/bash
echo $1 >> /path/to/logfile
EOF
chmod +x /path/to/mylogger.sh
Thats it.
2
Given that the parent is talking about "Unix 11i v2", I assume that he is talking of HP-UX, which doesn't have inotify (and thus incron) nor systemd, so your answer wouldn't work for him. Unless you're suggesting he should change his OS...
– user60039
Jul 14 '14 at 0:03
hi user60039, you are correct, I am using HP-UX ...
– jes516
Jul 14 '14 at 0:51
add a comment |
Do you want something that monitors a directory? incron can be quite handy for that:
1. Install incron from a repo
2. Enable incrond:
sudo systemctl enable incrond.service
sudo systemctl start incrond.service
3.Create appropriate incrontab:
incrontab -e
and add as content:
/path/to/watch IN_CREATE /path/to/mylogger.sh $@/$#
4.Create the logger script:
cat <<EOF>> /path/to/mylogger.sh
#!/bin/bash
echo $1 >> /path/to/logfile
EOF
chmod +x /path/to/mylogger.sh
Thats it.
Do you want something that monitors a directory? incron can be quite handy for that:
1. Install incron from a repo
2. Enable incrond:
sudo systemctl enable incrond.service
sudo systemctl start incrond.service
3.Create appropriate incrontab:
incrontab -e
and add as content:
/path/to/watch IN_CREATE /path/to/mylogger.sh $@/$#
4.Create the logger script:
cat <<EOF>> /path/to/mylogger.sh
#!/bin/bash
echo $1 >> /path/to/logfile
EOF
chmod +x /path/to/mylogger.sh
Thats it.
answered Jul 13 '14 at 22:44
Dani_lDani_l
3,185929
3,185929
2
Given that the parent is talking about "Unix 11i v2", I assume that he is talking of HP-UX, which doesn't have inotify (and thus incron) nor systemd, so your answer wouldn't work for him. Unless you're suggesting he should change his OS...
– user60039
Jul 14 '14 at 0:03
hi user60039, you are correct, I am using HP-UX ...
– jes516
Jul 14 '14 at 0:51
add a comment |
2
Given that the parent is talking about "Unix 11i v2", I assume that he is talking of HP-UX, which doesn't have inotify (and thus incron) nor systemd, so your answer wouldn't work for him. Unless you're suggesting he should change his OS...
– user60039
Jul 14 '14 at 0:03
hi user60039, you are correct, I am using HP-UX ...
– jes516
Jul 14 '14 at 0:51
2
2
Given that the parent is talking about "Unix 11i v2", I assume that he is talking of HP-UX, which doesn't have inotify (and thus incron) nor systemd, so your answer wouldn't work for him. Unless you're suggesting he should change his OS...
– user60039
Jul 14 '14 at 0:03
Given that the parent is talking about "Unix 11i v2", I assume that he is talking of HP-UX, which doesn't have inotify (and thus incron) nor systemd, so your answer wouldn't work for him. Unless you're suggesting he should change his OS...
– user60039
Jul 14 '14 at 0:03
hi user60039, you are correct, I am using HP-UX ...
– jes516
Jul 14 '14 at 0:51
hi user60039, you are correct, I am using HP-UX ...
– jes516
Jul 14 '14 at 0:51
add a comment |
Hello I was hopping someone with better skill could answer. HP-UX has quite an old System V toolbox so you will not have the recent GNU tools.
HP-UX posix shell, which is /usr/bin/sh
is very close to ksh93. So you can compare the age of two files with [[ file1 -nt file2 ]]
wich returns true if file1
is newer than file2
. Don't use /usr/bin/ksh
on HP-UX it is a very old standard korn-shell (perhaps 1982).
Here is a simple script that you can run periodically. It should be hardened better to support files with specials characters in the names and other possible errors but I'm not good at that.
The files being watched are in DIR, the new files list is /tmp/newfile. The list is created while comparing all the file in DIR to the youngest file found during the last run so it supports new files being created while it runs.
The script does not support multiple execution at the same time, you may have to implement locks or to space each execution with enough time.
#!/usr/bin/sh
previous=/tmp/previous
new=/tmp/newfiles
DIR=/tmp/aa
if [[ ! -s $new ]]
then
mv "$new" "$previous"
fi
if [[ ! -f "$previous" ]]
then
ls -rt "$DIR" > "$new"
exit
fi
ref=$(tail -1 "$previous")
if ! cd "$DIR"
then
echo cannot cd "$DIR"
exit 1
fi
ls -rt | while read file
do
if [[ "$file" -nt "$ref" ]]
then
echo "$file"
fi
done > "$new"
You could run it in cron, for instance :
every five minutes (note that hp-ux crontab do not support *5 syntax)
0,5,10,15,20,25,30,35,40,45,55 * * * * /myscript.sh >>/var/adm/myscript.log 2>&1
every hour
0 * * * * /myscript.sh >>/var/adm/myscript.log 2>&1
once a day
0 0 * * * /myscript.sh >>/var/adm/myscript.log 2>&1
add a comment |
Hello I was hopping someone with better skill could answer. HP-UX has quite an old System V toolbox so you will not have the recent GNU tools.
HP-UX posix shell, which is /usr/bin/sh
is very close to ksh93. So you can compare the age of two files with [[ file1 -nt file2 ]]
wich returns true if file1
is newer than file2
. Don't use /usr/bin/ksh
on HP-UX it is a very old standard korn-shell (perhaps 1982).
Here is a simple script that you can run periodically. It should be hardened better to support files with specials characters in the names and other possible errors but I'm not good at that.
The files being watched are in DIR, the new files list is /tmp/newfile. The list is created while comparing all the file in DIR to the youngest file found during the last run so it supports new files being created while it runs.
The script does not support multiple execution at the same time, you may have to implement locks or to space each execution with enough time.
#!/usr/bin/sh
previous=/tmp/previous
new=/tmp/newfiles
DIR=/tmp/aa
if [[ ! -s $new ]]
then
mv "$new" "$previous"
fi
if [[ ! -f "$previous" ]]
then
ls -rt "$DIR" > "$new"
exit
fi
ref=$(tail -1 "$previous")
if ! cd "$DIR"
then
echo cannot cd "$DIR"
exit 1
fi
ls -rt | while read file
do
if [[ "$file" -nt "$ref" ]]
then
echo "$file"
fi
done > "$new"
You could run it in cron, for instance :
every five minutes (note that hp-ux crontab do not support *5 syntax)
0,5,10,15,20,25,30,35,40,45,55 * * * * /myscript.sh >>/var/adm/myscript.log 2>&1
every hour
0 * * * * /myscript.sh >>/var/adm/myscript.log 2>&1
once a day
0 0 * * * /myscript.sh >>/var/adm/myscript.log 2>&1
add a comment |
Hello I was hopping someone with better skill could answer. HP-UX has quite an old System V toolbox so you will not have the recent GNU tools.
HP-UX posix shell, which is /usr/bin/sh
is very close to ksh93. So you can compare the age of two files with [[ file1 -nt file2 ]]
wich returns true if file1
is newer than file2
. Don't use /usr/bin/ksh
on HP-UX it is a very old standard korn-shell (perhaps 1982).
Here is a simple script that you can run periodically. It should be hardened better to support files with specials characters in the names and other possible errors but I'm not good at that.
The files being watched are in DIR, the new files list is /tmp/newfile. The list is created while comparing all the file in DIR to the youngest file found during the last run so it supports new files being created while it runs.
The script does not support multiple execution at the same time, you may have to implement locks or to space each execution with enough time.
#!/usr/bin/sh
previous=/tmp/previous
new=/tmp/newfiles
DIR=/tmp/aa
if [[ ! -s $new ]]
then
mv "$new" "$previous"
fi
if [[ ! -f "$previous" ]]
then
ls -rt "$DIR" > "$new"
exit
fi
ref=$(tail -1 "$previous")
if ! cd "$DIR"
then
echo cannot cd "$DIR"
exit 1
fi
ls -rt | while read file
do
if [[ "$file" -nt "$ref" ]]
then
echo "$file"
fi
done > "$new"
You could run it in cron, for instance :
every five minutes (note that hp-ux crontab do not support *5 syntax)
0,5,10,15,20,25,30,35,40,45,55 * * * * /myscript.sh >>/var/adm/myscript.log 2>&1
every hour
0 * * * * /myscript.sh >>/var/adm/myscript.log 2>&1
once a day
0 0 * * * /myscript.sh >>/var/adm/myscript.log 2>&1
Hello I was hopping someone with better skill could answer. HP-UX has quite an old System V toolbox so you will not have the recent GNU tools.
HP-UX posix shell, which is /usr/bin/sh
is very close to ksh93. So you can compare the age of two files with [[ file1 -nt file2 ]]
wich returns true if file1
is newer than file2
. Don't use /usr/bin/ksh
on HP-UX it is a very old standard korn-shell (perhaps 1982).
Here is a simple script that you can run periodically. It should be hardened better to support files with specials characters in the names and other possible errors but I'm not good at that.
The files being watched are in DIR, the new files list is /tmp/newfile. The list is created while comparing all the file in DIR to the youngest file found during the last run so it supports new files being created while it runs.
The script does not support multiple execution at the same time, you may have to implement locks or to space each execution with enough time.
#!/usr/bin/sh
previous=/tmp/previous
new=/tmp/newfiles
DIR=/tmp/aa
if [[ ! -s $new ]]
then
mv "$new" "$previous"
fi
if [[ ! -f "$previous" ]]
then
ls -rt "$DIR" > "$new"
exit
fi
ref=$(tail -1 "$previous")
if ! cd "$DIR"
then
echo cannot cd "$DIR"
exit 1
fi
ls -rt | while read file
do
if [[ "$file" -nt "$ref" ]]
then
echo "$file"
fi
done > "$new"
You could run it in cron, for instance :
every five minutes (note that hp-ux crontab do not support *5 syntax)
0,5,10,15,20,25,30,35,40,45,55 * * * * /myscript.sh >>/var/adm/myscript.log 2>&1
every hour
0 * * * * /myscript.sh >>/var/adm/myscript.log 2>&1
once a day
0 0 * * * /myscript.sh >>/var/adm/myscript.log 2>&1
edited Jul 15 '14 at 10:20
answered Jul 14 '14 at 11:16
EmmanuelEmmanuel
3,05911120
3,05911120
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f144367%2funix-11i-v2-script-to-detect-new-files-within-directory%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Well
bash
is a shell scripting language and interpreter; that's as good a place as any to start with writing a shell script.– HalosGhost
Jul 13 '14 at 21:31
So you want to get a list of all files modified since midnight? If the directory has directories in it, do you want to look through them, too?
– Mark Plotnick
Jul 15 '14 at 8:29
no, i want to check for new files within a directory /xyz/client, if there is a new file (file was created today), then either send an email notification (as i did above) or print a list of files within /xyz/client as a text file to a separate directory /xyz/jon
– jes516
Jul 15 '14 at 12:23
OK. By "created today", do you mean "did not exist prior to midnight but exists now"? Unix (except on Mac OS X and on ext4 filesystems on Linux) doesn't keep track of when a file was created. For your HP-UX system, it sounds like what you want is to create a list of files at midnight, then create another list of files later in the day, and compare the two lists. Does that sound right?
– Mark Plotnick
Jul 15 '14 at 14:18
yes, if we cannot monitor/track when new files are created within that directory (/xyz/client), then that sounds like the way to go (compare: yesterdays file prior to midnight vs todays file after midnight) and send an email notification when there are differences between the two files. if you can help me out with this, i would highly appreciate it. We are on HP-UX B.11.23 U 9000/800 if it helps... and i am in the process of setting up mailx for use in command line for script..
– jes516
Jul 15 '14 at 19:46