Sponsored Content
Top Forums Shell Programming and Scripting Determine amount of time to process Post 302461372 by Chubler_XL on Sunday 10th of October 2010 11:35:10 PM
Old 10-11-2010
How about the bash/ksh env variable $SECONDS?

Here is some code to get into human readable form, just call duration_str with number of seconds eg:

Code:
START=$SECONDS
...My command to time....
duration_str $(($SECONDS-$START))

Code:
plural()
{
 # usage: plural <value> <word>
 [ $1 -eq 1 ] && echo $1 $2 || echo $1 ${2}s
}

duration_sub()
{
  # Input <duration> <A-div> <A-desc> <B-div> <B-desc>
  let DUR_A=$1/$2
  let DUR_B=$1-DUR_A*$2
  let DUR_B/=$4
  echo $(plural $DUR_A $3) $(plural $DUR_B $5)
}

duration_str()
{
 # Input param1 is duration in seconds
 # Outputs human readable string to stdout

 DUR=$1
 [ $DUR -le 60      ] && echo $(plural $DUR second) && return
 [ $DUR -le 3600   ] && duration_sub $DUR    60 minute    1 second && return
 [ $DUR -le 86400  ] && duration_sub $DUR  3600 hour     60 minute && return
 [ $DUR -le 604800 ] && duration_sub $DUR 86400 day    3600 hour   && return
 # Older than a week
 duration_sub $DUR 604800 week 86400 day
}


Last edited by Chubler_XL; 10-11-2010 at 12:41 AM.. Reason: typo
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

executing a script for a certain amount of time

I am writing a script that takes two parameters: the name of another script and an integer that represents a number of seconds. The script must execute the second script (first parameter) for the specified number of seconds (second parameter), suspend it for the same number of seconds, and continue... (9 Replies)
Discussion started by: ponchorage
9 Replies

2. UNIX for Dummies Questions & Answers

Determine which file is invoking process?

Hey Guys, I am trying to figure out what is chewing up a bunch of CPU on our SunFire V120 Boxes and I am having a little trouble drilling down the source. When I check the CPU usage it displays tail & cat as the top two processes PID USERNAME SIZE RSS STATE PRI NICE TIME CPU... (1 Reply)
Discussion started by: Jerrad
1 Replies

3. AIX

How to determine what process is actively using my harddisk?

Hi, Is there any command that I can issue to check who is actively using my harddisk? I notice that yesterday the hdisk0 and hdisk1 is really actively being used and is reaching almost 100%. I realized that this is because of paging which is climbing up to 70%. However, just this morning... (3 Replies)
Discussion started by: depam
3 Replies

4. UNIX for Dummies Questions & Answers

determine total memory used by some user/process

HI guys, :confused:i would like to know how can i determine the total/approx memory used by a single user. Example Top output is below =========================================================================== top - 20:00:50 up 24 days, 2:48, 2 users, load average: 0.43, 0.40, 0.37... (3 Replies)
Discussion started by: cromohawk
3 Replies

5. UNIX for Dummies Questions & Answers

Script to determine logged in time

Hi all So I am thinking my inability to cope with math is bogging me down here so Im asking for help. I want to determine how long a user has been logged on for by using the date and who commands to determine the time they have been logge don. My problem is that I keep getting the wrong... (2 Replies)
Discussion started by: losingit
2 Replies

6. Shell Programming and Scripting

Determine previous time in minutes

I have several logs with where the time stamp in the logs are "YYYYMMDDHHMM". I would like to check the last line in each file to make sure the entry is less than 5 minutes old. My timezone is EST5EDT so the following will work for 1 hour. But I need something easy for 5 minutes ago.... (5 Replies)
Discussion started by: oldman2
5 Replies

7. UNIX for Advanced & Expert Users

Kill a process after a certain amount of time

I would like to kill a process after a certain amount of time. Can I please get some ideas on how to do this? (9 Replies)
Discussion started by: cokedude
9 Replies

8. UNIX for Dummies Questions & Answers

How to determine nfs mount time

Hi There are numerous mounts on my local system from various other remote machines. I was looking for some way to determine the time stamp when the drives are mounted. like say if there is a mount name backup on local system. I want to determine the timestamp when it was mounted. any... (3 Replies)
Discussion started by: rakeshkumar
3 Replies

9. Shell Programming and Scripting

How to determine the completion of a background process to trigger something else?

I've been thinking about a peculiar problem, and so far haven't been able to find out a convincing solution to that. To put it simply, I have a shell script (assume it to be parent_script.sh), calling another shell script (child_script.sh) 5 times, in nohup mode to be executed in the background.... (3 Replies)
Discussion started by: Aviktheory11
3 Replies

10. Shell Programming and Scripting

Run a command for specific amount of time with an auto key press

Hi, I have been trying to do a small fun project for myself. I want to run a command for 45 seconds. And to get the final output of this command, the script requires I push the "q" key on my keyboard and then the final output file becomes available. I tried the following script. But it... (12 Replies)
Discussion started by: jacobs.smith
12 Replies
RC(8)							    BSD System Manager's Manual 						     RC(8)

NAME
rc, rc.local, rc.shutdown, rc.d/ -- startup and shutdown scripts SYNOPSIS
rc rc.local rc.shutdown rc.d/ DESCRIPTION
rc is the command script which controls the startup of various services, and is invoked by init(8) as part of the process of entering the automatic reboot to multi-user startup, or after the single user mode shell has exited. If init(8) is starting the automatic reboot process, rc is invoked with the argument of 'autoboot'. rc.local is a command script to which local boot-time actions can be added. It is (nearly) the last thing invoked by rc during a normal boot. rc.shutdown is the command script which shuts down various services, and is invoked by shutdown(8) as part of the process of shutting down the system. rc.d/ is the directory which contains various sh(1) scripts, one for each service, which are called by rc at startup, rc.shutdown at shut- down, and as necessary during system operation to stop, start, restart, reload, or otherwise control the service. Operation of rc 1. Source /etc/rc.subr to load various rc.subr(8) shell functions to use. 2. If autobooting, set autoboot=yes and enable a flag (rc_fast=yes), which prevents the rc.d scripts from performing the check for already running processes (thus speeding up the boot process). This rc_fast=yes speedup won't occur when rc is started up after exiting the single-user shell. 3. Invoke rcorder(8) to order the files in /etc/rc.d/ that do not have a ``nostart'' keyword (refer to rcorder(8)'s -s flag), and assigns the result to a variable. 4. Calls each script in turn using run_rc_script() (from rc.subr(8)), which sets $1 to 'start', and sources the script in a subshell. If the script has a '.sh' suffix then it is sourced directly into the current shell. 5. The output from the above steps is sent to a post-processor. If rc_silent is false, then the post-processor displays the output. If rc_silent is true, then the post-processor invokes the command specified in rc_silent_cmd once for each line, without otherwise display- ing the output. Useful values for rc_silent_cmd include ``:'' to display nothing at all, and ``twiddle'' to display a spinning symbol on the console. Regardless of the value of rc_silent, the post-processor saves the output in /var/run/rc.log. Operation of rc.shutdown 1. Source /etc/rc.subr to load various rc.subr(8) shell functions to use. 2. Invoke rcorder(8) to order the files in /etc/rc.d/ that have a ``shutdown'' keyword (refer to rcorder(8)'s -k flag), reverses that order, and assigns the result to a variable. 3. Calls each script in turn using run_rc_script() (from rc.subr(8)), which sets $1 to 'stop', and sources the script in a subshell. If the script has a '.sh' suffix then it is sourced directly into the current shell. Contents of rc.d/ rc.d/ is located in /etc/rc.d. The following file naming conventions are currently used in rc.d/: ALLUPPERCASE Scripts that are 'placeholders' to ensure that certain operations are performed before others. In order of startup, these are: NETWORKING Ensure basic network services are running, including general network configuration (network) and dhclient. SERVERS Ensure basic services (such as NETWORKING, ppp, syslogd, and kdc) exist for services that start early (such as named), because they're required by DAEMON below. DAEMON Before all general purpose daemons such as dhcpd, lpd, and ntpd. LOGIN Before user login services (inetd, telnetd, rshd, sshd, and xdm), as well as before services which might run commands as users (cron, postfix, and sendmail). foo.sh Scripts that are to be sourced into the current shell rather than a subshell have a '.sh' suffix. Extreme care must be taken in using this, as the startup sequence will terminate if the script does. /etc/rc.d/bootconf.sh uses this behav- iour to allow the user to select a different configuration (including /etc/rc.conf) early in the boot. bar Scripts that are sourced in a subshell. The boot does not stop if such a script terminates with a non-zero status, but a script can stop the boot if necessary by invoking the stop_boot() function (from rc.subr(8)). Each script should contain rcorder(8) keywords, especially an appropriate ``PROVIDE'' entry. The scripts are expected to support at least the following arguments: start Start the service. This should check that the service is to be started as specified by rc.conf(5). Also checks if the ser- vice is already running and refuses to start if it is. This latter check is not performed by standard NetBSD scripts if the system is starting directly to multi-user mode, to speed up the boot process. stop If the service is to be started as specified by rc.conf(5), stop the service. This should check that the service is running and complain if it's not. restart Perform a stop then a start. status If the script starts a process (rather than performing a one-off operation), show the status of the process. Otherwise it's not necessary to support this argument. Defaults to displaying the process ID of the program (if running). poll If the script starts a process (rather than performing a one-off operation), wait for the command to exit. Otherwise it's not necessary to support this argument. rcvar Display which rc.conf(5) variables are used to control the startup of the service (if any). Other arguments (such as 'reload', 'dumpdb', etc) can be added if necessary. The argument may have one of the following prefixes to alter its operation: fast Skip the check for an existing running process. Sets rc_fast=yes. force Skips the rc.conf(5) check, ignores a failure result from any of the prerequisite checks, executes the command, and always returns a zero exit status. Sets rc_force=yes. one Skips the rc.conf(5) check, but performs all other prerequisite tests. In order to simplify scripts, the run_rc_command() function from rc.subr(8) may be used. FILES
/etc/rc Startup script called by init(8). /etc/rc.d/ Directory containing control scripts for each service. /etc/rc.local Local startup script. /etc/rc.shutdown Shutdown script called by shutdown(8). /etc/rc.subr Contains rc.subr(8) functions used by various scripts. /etc/rc.conf System startup configuration file. /var/run/rc.log Log file created by rc. SEE ALSO
rc.conf(5), init(8), rc.subr(8), rcorder(8), reboot(8), shutdown(8) Luke Mewburn, "The Design and Implementation of the NetBSD rc.d system", Proceedings of the FREENIX Track: 2001 USENIX Annual Technical Conference, USENIX Association, http://www.usenix.org/publications/library/proceedings/usenix01/freenix01/full_papers/mewburn/mewburn.pdf, June 25-30, 2001. HISTORY
The rc command appeared in 4.0BSD. The /etc/rc.d support was implemented in NetBSD 1.5 by Luke Mewburn <lukem@NetBSD.org>. The post-proces- sor, support for rc_silent, and saving output to a file, was implemented in NetBSD 6.0 by Alan Barrett. BSD
May 14, 2010 BSD
All times are GMT -4. The time now is 09:35 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy