Sponsored Content
Top Forums Shell Programming and Scripting Bash script to periodically monitor a process's memory usage Post 303045286 by james101 on Sunday 15th of March 2020 03:08:16 PM
Old 03-15-2020
Bash script to periodically monitor a process's memory usage

I'm looking for a bash script that allows me to start a process in background, monitor its memory consumption every 10 minutes for example, and if it exceeds a certain value kill it and restart it.
Some idea?
I'm new to bash programming, I started writing a script and after testing it I always get the same error,
Code:
syntax error near unexpected token 'fi'

how to proceed? I run the code on an ec2 aws istance


Code:
    #note that this code is incomplete while loop missing
    #!/usr/bin/bash
    sudo python3 main.py &
    pidlist=$(pidof python3 main.py)
    read FIRST __ <<< "$pidlist"
    echo "$FIRST"
    #memory in percent
    mem=$(ps -p "$FIRST" -o %mem)
    echo "$mem"
    set -- $mem
    memory="$2"
    if [ "$memory" -gt "20.0" ];then
      echo "killing process"
    fi


Last edited by james101; 03-16-2020 at 01:59 PM..
 

9 More Discussions You Might Find Interesting

1. Programming

Monitor CPU usage and Memory Usage

how can i monitor usages of CPU, Memory, Hard disk etc. under SUN Solaries through a c program or java program i want to store that data into database so i can show it graphically thanks in advance (2 Replies)
Discussion started by: Gajanad Bihani
2 Replies

2. Shell Programming and Scripting

Memory usage of a process

hi all, i want to write a script that checks the memory usage of processes and send a mail with the name of the process witch is using more then 300mb RAM. dose anybody have a sample script or an idea how i can make it ? PROCCESSES="snmpd sendmail" for myVar in $PROCCESSES do ... (7 Replies)
Discussion started by: tafil
7 Replies

3. AIX

How to monitor the IBM AIX server for I/O usage,memory usage,CPU usage,network..?

How to monitor the IBM AIX server for I/O usage, memory usage, CPU usage, network usage, storage usage? (3 Replies)
Discussion started by: laknar
3 Replies

4. UNIX for Dummies Questions & Answers

Monitor Memory of a process

Hi, I need to monitor the memory usage of a particular process continuously. As of now I am using the following command: ps -fu <user name> -o pid,comm,vsz | grep <process_name> | grep -v grep The output of this command gives me what i need except i want the output to keep getting updated... (3 Replies)
Discussion started by: archana485
3 Replies

5. UNIX for Advanced & Expert Users

How often should I monitor the CPU and memory usage ?

Hi all, When you monitor the CPU and memory usage, how often do you do it ? Do it too often or too rarely will both cause the problem. So does anyone have hand-on experience ? And for my case, the requirement says that when CPU usage is above X% or memory usage is above Y%, I should reject... (5 Replies)
Discussion started by: qiulang
5 Replies

6. Emergency UNIX and Linux Support

How to monitor a process memory utilization?

hi frnds, I want to monitor a particular process very closly on how much memory it is taking. i tried with TOP and PRSTAT commands that is not giving what exactly i need. In my application, there is a memory leak happening, i want to know when it is occuering, means which transcation is... (9 Replies)
Discussion started by: vij_krr
9 Replies

7. Shell Programming and Scripting

Memory Usage Monitor on Linux/SunOS Servers

ok, so i'm trying to write a shell script (not perl) that monitors memory usage on a server. but i'm confused as to what fields exactly determines that yes, memory is low on a particular server. it sounds simple enough, but it really isn't. what do I look for in the field below? ... (1 Reply)
Discussion started by: SkySmart
1 Replies

8. UNIX for Dummies Questions & Answers

What to monitor for memory usage?

hi guys I am having a doubt about memory monitoring on linux system what I should be monitoring? memory usage? o swap usage? I am using some monitoring tools but I am confused to what monitor for alerting for example this case looks the memory usage is very high and it's like that all... (2 Replies)
Discussion started by: karlochacon
2 Replies

9. Shell Programming and Scripting

Shell script for logging cpu and memory usage of a Linux process

I am looking for a way to log and graphically display cpu and RAM usage of linux processes over time. Since I couldn't find a simple tool to so (I tried zabbix and munin but installation failed) I started writing a shell script to do so The script file parses the output of top command through... (2 Replies)
Discussion started by: andy_dufresne
2 Replies
WATCHQUAGGA(8)						      System Manager's Manual						    WATCHQUAGGA(8)

NAME
watchquagga - a program to monitor the status of quagga daemons SYNOPSIS
watchquagga [option...] daemon... watchquagga -h | -v DESCRIPTION
watchquagga is a watchdog program that monitors the status of supplied quagga daemons and tries to restart them in case they become unre- sponsive or shut down. To determine whether a daemon is running, it tries to connect to the daemon's VTY UNIX stream socket, and send echo commands to ensure the daemon responds. When the daemon crashes, EOF is received from the socket, so that watchquagga can react immediately. This program can run in one of the following 5 modes: Mode 0: monitor In this mode, the program serves as a monitor and reports status changes. Example usage: watchquagga -d zebra ospfd bgpd Mode 1: global restart In this mode, whenever a daemon hangs or crashes, the given command is used to restart all watched daemons. Example usage: watchquagga -dz -R '/sbin/service zebra restart; /sbin/service ospfd restart' zebra ospfd Mode 2: individual daemon restart In this mode, whenever a single daemon hangs or crashes, the given command is used to restart this daemon only. Example usage: watchquagga -dz -r '/sbin/service %s restart' zebra ospfd bgpd Mode 3: phased zebra restart In this mode, whenever a single daemon hangs or crashes, the given command is used to restart this daemon only. The only exception is the zebra daemon; in this case, the following steps are taken: (1) all other daemons are stopped, (2) zebra is restarted, and (3) other daemons are started again. Example usage: watchquagga -adz -r '/sbin/service %s restart' -s '/sbin/service %s start' -k '/sbin/service %s stop' zebra ospfd bgpd Mode 4: phased global restart for any failure In this mode, whenever a single daemon hangs or crashes, the following steps are taken: (1) all other daemons are stopped, (2) zebra is restarted, and (3) other daemons are started again. Example usage: watchquagga -Adz -r '/sbin/service %s restart' -s '/sbin/service %s start' -k '/sbin/service %s stop' zebra ospfd bgpd Important: It is believed that mode 2 (individual daemon restart) is not safe, and mode 3 (phased zebra restart) may not be safe with cer- tain routing daemons. In order to avoid restarting the daemons in quick succession, you can supply the -m and -M options to set the minimum and maximum delay between the restart commands. The minimum restart delay is recalculated each time a restart is attempted. If the time since the last restart attempt exceeds twice the value of -M, the restart delay is set to the value of -m, otherwise the interval is doubled (but capped at the value of -M). OPTIONS
-d, --daemon Run in daemon mode. When supplied, error messages are sent to Syslog instead of standard output (stdout). -S directory, --statedir directory Set the VTY socket directory (the default value is "/var/run/quagga"). -e, --no-echo Do not ping the daemons to test whether they respond. This option is necessary if one or more daemons do not support the echo com- mand. -l level, --loglevel level Set the logging level (the default value is "6"). The value should range from 0 (LOG_EMERG) to 7 (LOG_DEBUG), but higher number can be supplied if extra debugging messages are required. -m number, --min-restart-interval number Set the minimum number of seconds to wait between invocations of the daemon restart commands (the default value is "60"). -M number, --max-restart-interval number Set the maximum number of seconds to wait between invocations of the daemon restart commands (the default value is "600"). -i number, --interval number Set the status polling interval in seconds (the default value is "5"). -t number, --timeout number Set the unresponsiveness timeout in seconds (the default value is "10"). -T number, --restart-timeout number Set the restart (kill) timeout in seconds (the default value is "20"). If any background jobs are still running after this period has elapsed, they will be killed. -r command, --restart command Supply a Bourne shell command to restart a single daemon. The command string should contain the '%s' placeholder to be substituted with the daemon name. Note that -r and -R options are not compatible. -s command, --start-command command Supply a Bourne shell command to start a single daemon. The command string should contain the '%s' placeholder to be substituted with the daemon name. -k command, --kill-command command Supply a Bourne shell command to stop a single daemon. The command string should contain the '%s' placeholder to be substituted with the daemon name. -R, --restart-all When one or more daemons are shut down, try to restart them using the Bourne shell command supplied on the command line. Note that -r and -R options are not compatible. -z, --unresponsive-restart When a daemon is in an unresponsive state, treat it as being shut down for the restart purposes. -a, --all-restart When zebra hangs or crashes, restart all daemons taking the following steps: (1) stop all other daemons, (2) restart zebra, and (3) start other daemons again. Note that this option also requires -r, -s, and -k options to be specified. -A, --always-all-restart When any daemon (i.e., not just zebra) hangs or crashes, restart all daemons taking the following steps: (1) stop all other daemons, (2) restart zebra, and (3) start other daemons again. Note that this option also requires -r, -s, and -k options to be specified. -p filename, --pid-file filename Set the process identifier filename (the default value is "/var/run/quagga/watchquagga.pid"). -b string, --blank-string string When the supplied string is found in any of the command line option arguments (i.e., -r, -s, -k, or -R), replace it with a space. This is an ugly hack to circumvent problems with passing the command line arguments containing embedded spaces. -v, --version Display the version information and exit. -h, --help Display the usage information and exit. SEE ALSO
zebra(8), bgpd(8), isisd(8), ospfd(8), ospf6d(8), ripd(8), ripngd(8) See the project homepage at <http://www.quagga.net/>. AUTHORS
Copyright 2004 Andrew J. Schorr July 2010 WATCHQUAGGA(8)
All times are GMT -4. The time now is 10:28 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy