Disk Activity in Applescript

How can I poll drive activity in Applescript? Check if drive X is being read, written, or idle every N seconds and is doing something.

+4
source share
4 answers

In general, polling is less effective than notification when something happens. Also, if you are checking to see if something is reading from the disk, you will probably be accessing the specified disk yourself, possibly influencing what you are trying to observe.

Starting with 10.5, OSX includes something called a file system framework that provides detailed notifications of changes to the file system. The problem in your case is that it is only Objective-C. Apple has good documentation about this API.

Fortunately, there is also a call method AppleScript command. This allows you to work with Objective-C objects from AppleScript. Here's the documentation .

I also have no experience, so links to documentation. Hope this helps you.

+2
source

You can periodically run the iostat terminal command. You must analyze the results in a form that you can digest.

If you know enough about the various UNIX command line tools, I would suggest iostat pass the awk or sed output to retrieve only the necessary information.

0
source

You really should take a look at Dtrace. He has the ability to do such things.

 #!/usr/sbin/dtrace -s /* * bitesize.d - analyse disk I/O size by process. * Written using DTrace (Solaris 10 build 63). * * This produces a report for the size of disk events caused by * processes. These are the disk events sent by the block I/O driver. * * If applications must use the disks, we generally prefer they do so * sequentially with large I/O sizes. * * 15-Jun-2005, ver 1.00 * * USAGE: bitesize.d # wait several seconds, then hit Ctrl-C * * FIELDS: * PID process ID * CMD command and argument list * value size in bytes * count number of I/O operations * * NOTES: * The application may be requesting smaller sized operations, which * are being rounded up to the nearest sector size or UFS block size. * To analyse what the application is requesting, DTraceToolkit programs * such as Proc/fddist may help. * * SEE ALSO: seeksize.d, iosnoop * * Standard Disclaimer: This is freeware, use at your own risk. * * 31-Mar-2004 Brendan Gregg Created this, build 51. * 10-Oct-2004 " " Rewrote to use the io provider, build 63. */ #pragma D option quiet /* * Print header */ dtrace:::BEGIN { printf("Sampling... Hit Ctrl-C to end.\n"); } /* * Process io start */ io:::start { /* fetch details */ this->size = args[0]->b_bcount; cmd = (string)curpsinfo->pr_psargs; /* store details */ @Size[pid,cmd] = quantize(this->size); } /* * Print final report */ dtrace:::END { printf("\n%8s %s\n","PID","CMD"); printa("%8d %s\n%@d\n",@Size); } 

From here .

To start using

 sudo dtrace -s bitsize.d 
0
source

As Porkchop D. Clown said , you can use iostat. You can use the command:

  iostat -c 50 -w 5 

which will run iostat 50 times every 5 seconds.

0
source

Source: https://habr.com/ru/post/1276698/


All Articles