running a linux process in MATLAB

I need to check memory usage only while running a particular code in MATLAB. I am working on a linux machine
I need to do the below sequence of events in MATLAB
  • matlab commands (4 code initializing);
  • start checking and logging mem usage (Can be done using system command) ;
  • main matlab commands ;
  • stop checking and logging mem usage (Can be done using system command) ;
I tried the following:
Using watch I can keep doing it infinitely. However it requires a manual stop! And I cant predict when it will stop.
I tried creating a shell script with a flag and then tried to update the flag on another terminal. That to didnt work!
flag=0
while [flag == 0]
do
run cmd
done
and in a terminal tried flag=1
Please help! Will there be a mail sent to my mail id? if any one posts a solution?
Regards,
Manants

Answers (1)

Instead of a variable "flag", why not touch a file
touch /tmp/memorylogging
then in your script you use the existance of the file
#!/bin/bash
file="/tmp/memorylogging"
while [ -f "$file" ]
do
run cmd
done
When you are done you can delete the file and the memory logging will stop.
rm /tmp/memorylogging

4 Comments

Hi,Am a newbie to linux I didnt understand your code! I did "man" on touch command it said: touch updates the access and modification times of each file. Didnt understand how that is useful to me!
Also when does the while loop stop? didnt follow -f "$file"
Regards, Manas
Touch can do two things -- one is the thing you mentioned, which is to update the access and modification times of a file. The other thing it can do is create an empty file of the name specified if one doesn't exist already, which is pretty useful. So
touch /tmp/memorylogging
will create a file called "memorylogging" in the directory /tmp
So if you did the following in this order
  1. Touch the file
  2. Start the script
The script would run the command until the file was removed, which would make the "while" condition fail, since "-f $file" simply means "does the file exist on disk".
This is a way to implement the control scheme you want, as environment variables aren't communucated between terminal windows.
Ran into a hiccup, the cmd I wanted instead of run cmd is watch cmd which in turn executes the top cmd in batch mode with the output piped into a text file! I cant run the script unless its in background! Then too despite deleting the flag file it still logged the value until I closed MATLAB! Any help?
I think you need to step back and figure out exactly what to do. Draw it out with blocks and arrows, set up a flowchart, etc. Then start with the code and tools you need. It sounds like you are throwing stuff at the wall and hoping it will stick.
The man pages for the various utilites can be very helpful.

Sign in to comment.

Categories

Asked:

on 20 Feb 2013

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!