Sponsored Content
Full Discussion: check for "cannot open file"
Top Forums UNIX for Dummies Questions & Answers check for "cannot open file" Post 302108435 by sb008 on Monday 26th of February 2007 01:36:07 PM
Old 02-26-2007
Quote:
Originally Posted by ssmith001
I have a small script that checks to see if a file exists and that it has data in it. I also need to check if the file can be opened. I had an issue today where the file it checks could not be opened and my script did not catch it. How do I check to see if it cannot be opened?

Code:
dirname=/opt/manu/srv
f1=manumgrmdip2_7500.log
f2=manumgrmdip2_7500.pid
export HOST=`hostname`
f1size=`wc -c $dirname/manumgrmdip2_7500.log | cut -f1 -d " "`
f2size=`wc -c $dirname/manumgrmdip2_7500.pid | cut -f1 -d " "`

if [[ ! -f $dirname/$f1 || ! -f $dirname/$f2 ]] ; then
      echo "Either <$dirname/$f1> or <$dirname/$f1> does not exist" | mailx -s "Missing files on Manugistics $HOST Server (MDIP2)" user@xyz.com
else if (( $(wc -c < $dirname/$f1) != 0 )) || (( $(wc -c < $dirname/$f2) > 6 )) ; then
      echo "The size of $dirname/$f1 size = $f1size, and $dirname/$f2 = $f2size'" | mailx -s "Error with file sizes on Manugistics $HOST Server (MDIP2)" user@xyz.com < manumgrmdip2_7500.log
     fi;
fi;


-r <filename> to check for existance and readability
-s <filename> to check for existance and size greater than 0

Code:
#!/usr/bin/ksh
dirname=/opt/manu/srv
f1=manumgrmdip2_7500.log
f2=manumgrmdip2_7500.pid
export HOST=`hostname`

if [ ! -r ${dirname}/${f1} -o ! -r ${dirname}/${f2} ]
then
  echo "Either <$dirname/$f1> or <$dirname/$f1> does not exist or is not readable" | mailx -s "Missing files on Manugistics $HOST Server (MDIP2)" user@xyz.com
elif [ ! -s ${dirname}/${f1} -o ! -s ${dirname}/${f2} ]
then
  echo "Either <$dirname/$f1> or <$dirname/$f2>has a filesize of 0'" | mailx -s "Error with file sizes on Manugistics $HOST Server (MDIP2)" user@xyz.com < manumgrmdip2_7500.log
fi

if you want to know the exact size use the typeset command so you don't need the cut command:

Code:
typset -i f1size f2size
f1size=`wc -c ${dirname}/${f1}`
f2size=`wc -c ${dirname}/${f2}`

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

check input = "empty" and "numeric"

Hi how to check input is "empty" and "numeric" in ksh? e.g: ./myscript.ksh k output show: invalid number input ./myscript.ksh output show: no input ./myscript.ksh 10 output show: input is numeric (6 Replies)
Discussion started by: geoffry
6 Replies

2. AIX

Probably an easy SMIT question- "Unable to open temp file"

Hi All, Can't find any documentation on the web for this anywhere, except about three web pages that are in Chinese. When I enter SMIT on this box, I get ERROR MESSAGE: Unable to open temp file I suspected smit.log, but it is universal readable, writeable by root, and I am root.... (6 Replies)
Discussion started by: jeffpas
6 Replies

3. SuSE

VMDB Failure" followed by "Unable to open snapshot file"

keep getting an error when I try to revert to a snapshot: "VMDB Failure" followed by "Unable to open snapshot file" Im using vmware server 1.0.4, host OS is windows xp and guest OS is SLES. Is there anything I can do to recover the snapshot or am I in trouble!?!?! (0 Replies)
Discussion started by: s_linux
0 Replies

4. Shell Programming and Scripting

"sed" to check file size & echo " " to destination file

Hi, I've modified the syslogd source to include a thread that will keep track of a timer(or a timer thread). My intention is to check the file size of /var/log/messages in every one minute & if the size is more than 128KB, do a echo " " > /var/log/messages, so that the file size will be set... (7 Replies)
Discussion started by: jockey007
7 Replies

5. Solaris

How to check "faulty" or "stalled" print queues - SAP systems?

Hi all, First off, sorry for a long post but I think I have no other option if I need to explain properly what I need help for. I need some advise on how best to check for "faulty" or "stalled/jammed' print queues. At the moment, I have three (3) application servers which also acts as print... (0 Replies)
Discussion started by: newbie_01
0 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. SCO

sco unix backward compatibility on "max open file per process"

Hi How to increase maximum number of open file in "sco xenix binary" running in "sco unix openserver 5.0.7" ? I have changed "NOFILES" kernel parameter to 512, but xenix binray can't open more than 60. tnx (4 Replies)
Discussion started by: javad1_maroofi
4 Replies

8. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

9. Shell Programming and Scripting

Expect: spawn id exp5 not open while executing "expect "$" { send "sudo su -\r" }"

Hi All, i am trying to ssh to a remote machine and execute certain command to remote machine through script. i am able to ssh but after its getting hung at the promt and after pressing ctrl +d i am gettin the out put as expect: spawn id exp5 not open while executing "expect "$" {... (3 Replies)
Discussion started by: Siddharth shivh
3 Replies

10. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies
DIRNAME(3)						     Linux Programmer's Manual							DIRNAME(3)

NAME
dirname, basename - Parse pathname components SYNOPSIS
#include <libgen.h> char *dirname(char *path); char *basename(char *path); DESCRIPTION
The functions dirname and basename break a null-terminated pathname string into directory and filename components. In the usual case, dirname returns the string up to, but not including, the final '/', and basename returns the component following the final '/'. Trailing '/' characters are not counted as part of the pathname. If path does not contain a slash, dirname returns the string "." while basename returns a copy of path. If path is the string "/", then both dirname and basename return the string "/". If path is a NULL pointer or points to an empty string, then both dirname and basename return the string ".". Concatenating the string returned by dirname, a "/", and the string returned by basename yields a complete pathname. Both dirname and basename may modify the contents of path, so if you need to preserve the pathname string, copies should be passed to these functions. Furthermore, dirname and basename may return pointers to statically allocated memory which may be overwritten by subsequent calls. The following list of examples (taken from SUSv2) shows the strings returned by dirname and basename for different paths: path dirname basename "/usr/lib" "/usr" "lib" "/usr/" "/" "usr" "usr" "." "usr" "/" "/" "/" "." "." "." ".." "." ".." EXAMPLE
char *dirc, *basec, *bname, *dname; char *path = "/etc/passwd"; dirc = strdup(path); basec = strdup(path); dname = dirname(dirc); bname = basename(basec); printf("dirname=%s, basename=%s ", dname, bname); free(dirc); free(basec); RETURN VALUE
Both dirname and basename return pointers to null-terminated strings. BUGS
In versions of glibc up to and including 2.2.1, dirname does not correctly handle pathnames with trailing '/' characters, and generates a segmentation violation if given a NULL argument. CONFORMING TO
SUSv2 SEE ALSO
dirname(1), basename(1), GNU
2000-12-14 DIRNAME(3)
All times are GMT -4. The time now is 09:36 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy