09-21-2006
help running strace
OK so I wanted to know how does grep outputs to the pipe and how sort reads from it. So I run a strace over "grep blah myfile | sort" and this is what I got:
open("myfile", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0600, st_size=84, ...}) = 0
read(3, "blah blah and blah cause of blah"..., 32768) = 84
fstat64(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fe8000
read(3, "", 32768) = 0
close(3) = 0
write(1, "blah blah and blah cause of blah"..., 85) = 85
close(1) = 0
munmap(0xb7fe8000, 4096) = 0
exit_group(0) = ?
Process 14533 detached
blah blah and blah cause of blah
find blah myfile blah grep it.
this is my blah file
I know that grep nor sort are aware of the pipe, they just input/output to the stdin/stdout... the pipe just connect them, that's how pipes works as far as I know... but what I don't see in this code is how grep is outputing to the pipe (stdout) and how is sort reading from the pipe (stdin). Is there anyway to check that relation? All I can tell from the code I bolded is:
MyFile -> Grep --------------------------> stdout
Unless "read(3, "", 32768)" has anything to do with the sort process.
Thanks in advance.
10 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
Hi,
Please I need your expert advise on how to prevent/lock from execution job1 while job2 is still running in Unix... THanks:) (3 Replies)
Discussion started by: tikang
3 Replies
2. UNIX for Advanced & Expert Users
Hi Gurus,
I need to trace a sqlplus session using strace.
Can someone please provide me the syntax. sorry was not able to figure out by reading the man page. :-(
i tried to do as below but getting the error
xt33db006/u1/app/oracle/product/10.2.0/asm_1$ strace -f sqlplus '/as sysdba'... (0 Replies)
Discussion started by: p4cldba
0 Replies
3. Solaris
Hi,
i have a script which need to do behave differently when run as a startup process from init.d/ rc2.d script and when run manually from shell.
How do i distinguish whether my script is run by init process or by shell??
Will the command
/proc/$$/psinfo | grep "myscript" work well???... (2 Replies)
Discussion started by: vickylife
2 Replies
4. UNIX for Advanced & Expert Users
Hi All,
int ioctl(int d, int request, ...);
Can somebody tell me how does ioctl decides the input parameter: "request".
Sometimes, its SNDCTL_TMR_TIMEBASE or TCGETS
or FIONREAD...etc.
What is the pattern??
I am asking this coz my strace returns this: ... (1 Reply)
Discussion started by: angad.makkar
1 Replies
5. Shell Programming and Scripting
Hi. A shell scripting newbie here. I am trying to write a script that will create a running total of Sales, and increment a counter for each Sales entry, but when I executed the program it never stopped.
counter=0
Sales=0
echo "enter sales price"
read sales
while
do
let counter=counter+1... (6 Replies)
Discussion started by: Ccccc
6 Replies
6. UNIX for Advanced & Expert Users
Hi,
does anyone know the equivalent command of the following in AIX :
$ strace -tp 15033
Process 15033 attached - interrupt to quit
11:28:06 gettimeofday({1257766086, 104118}, NULL) = 0
11:28:06 getrusage(RUSAGE_SELF, {ru_utime={2270, 615813}, ru_stime={0, 634903}, ...}) = 0
Thank you (6 Replies)
Discussion started by: big123456
6 Replies
7. UNIX for Advanced & Expert Users
Hi All,
Good day, need some help on strace result. We're encountering oracle Database server connection slowness (using sqlplus login to db server, there have 1 or 2 secs delay) we had generated strace and provide to oracle to investigate, and they told us it look like OS problem (Our OS is Red... (4 Replies)
Discussion started by: klng
4 Replies
8. Android
I need to run and monitor applications on Android Emulator. I am using the strace utility to monitor system calls. Everytime to start strace i need to manually start the application , get the process Id of the application and then give it to strace to start logging all the system calls.
So is... (20 Replies)
Discussion started by: far001han
20 Replies
9. Ubuntu
I want to run the strace -p xxxx -o in a script to monitor a process that hangs sometimes and requires a restart, my question is if strace is constantly running in the background will it chew up system resources and cause the system slowness? (3 Replies)
Discussion started by: wereyou
3 Replies
10. Red Hat
I have requirement for strace utility rpm package for RHEL 5.9. I have made a google for last 1 hr. but did not find the required one. Can any one help me out to find out the compatible rpm package of strace for Redhat 5.9 version (I require 64 bit version). (7 Replies)
Discussion started by: Anjan Ganguly
7 Replies
strace(8) System Manager's Manual strace(8)
NAME
strace - Writes STREAMS event trace messages to standard output
SYNOPSIS
/usr/sbin/strace [mod_ID sub_ID pri_level]
DESCRIPTION
The strace command gets STREAMS event trace messages from STREAMS drivers and modules via the STREAMS log driver (strlog), and writes these
messages to standard output. You can limit the messages strace receives by specifying arguments to the command. The arguments, which must
be specified together, are the following: Specifies the STREAMS module identification number. Specifies a subidentification number (often
corresponding to a minor device). Specifies a tracing priority level. The strace command will get messages of a level equal to or less
than the value in the pri_level argument. The value of the argument must be a nonnegative integer.
You can specify all as the value for any of the arguments in the strace command line. The value all indicates that there are no restric-
tions for that argument.
You can also specify multiple sets of the command's three arguments to obtain the messages from more than one driver or module.
More than one strace process can open the STREAMS log driver at a time. When you invoke strace, the log driver compares the sets of argu-
ments from the command line with actual trace messages, returning the messages that satisfy the criteria.
STREAMS event trace messages have the following format: seqnum stdtime tickstime pri_level ntfycode mod_ID sub_ID msgtext where:
The event trace sequence number. The time the message was sent, in the format hh:mm:ss. The time the message was sent, measured in
machine ticks since the last boot. The tracing priority level as defined by the STREAMS driver or module that originates the messages.
Can be either of the following indicators: Indicates that the message has also been saved in the error log. Indicates that the message
signaled a fatal error. The module identification number of the trace message source. The subidentification number of the trace message
source. The trace message text.
The strace command runs until terminated by the user.
NOTES
Running strace with several sets of arguments can negatively affect STREAMS performance, particularly for those modules and drivers sending
the messages.
Also be aware that strace may not be able to handle a large number of messages. If drivers and modules return messages to strace too
quickly, some may be lost.
EXAMPLES
To display all trace messages received from the driver or module identified by mod_ID 28, enter: strace 28 all all To display those trace
messages from the driver or module identified by mod_ID 28 and its minor devices identified by the sub_IDs 2, 3, and 4, enter: strace 28 2
all 28 3 all 28 4 all
This command line causes messages of any tracing priority level to be displayed. To display the trace messages from the same driver or
module and sub_IDs, but limited to certain priority levels, enter: strace 28 2 0 28 3 0 28 4 1 This command line specifies that messages
from driver or module 28 and sub_IDs 2 and 3 must have a tracing priority of 0, and those from sub_ID 4 must have a tracing priority equal
to or less than 1.
RELATED INFORMATION
Commands: strclean(8), strerr(8).
Interfaces: strlog(7). delim off
strace(8)