thank you very much Dave, i have resolved this issue by using your code.
your suggestion and explaination are very helpful. > Date: Mon, 21 Jan 2013 11:47:06 -0500 > From: anderson@xxxxxxxxxx > To: crash-utility@xxxxxxxxxx > Subject: Re: [Crash-utility] questions about crash utility > > > > ----- Original Message ----- > > > anyway, i can just ignore this issue right now. > > the remaining issue is how to make my procedures automatically. > > my purpose is to get trace ring buffer from kernel dump file and create a new > > file which name is like trace_$date.txt. the $date should be the time this text file > > is generated. > > what i am doing now is to create a .crashrc file in the ./ directory, and try to > > use file to make everything automatically. i need to make below procedures > > automatically: > > 1. load trace.so automatically. it is ok now. > > 2. read current date. it is ok now. > > 3. dump the kernel trace ring buffer into new text file the name of which contains current date. cannot do this now. > > 4. exit crash utility automatically. it is ok now. > > > > my .crashrc is as below, i don't know how to do the step 3 above: > > > > ---------------------- script start ------------------------------------------------------- > > > > echo $(date '+%Y%m%d_%H%M%S') <------ it is ok > > > > #cur=$(date '+%Y%m%d_%H%M%S') <----- it failed to use variable to store date > > #echo $cur <------it failed > > > > extend trace.so <------ it is ok > > > > trace report >./report_test.txt <------- to dump to a file which uses fixed file name, it is ok. > > > > > > trace report >./trace_$(date '+%Y%m%d_%H%M%S').txt <--- it failed when exit > > ---------------------- script end ----------------------------------------------- > > > > please help, thanks. > > For a shell command, you would need to precede the command with a "|" or > a "!". But the variable assignment would not persist, because each line > in the .crashrc (or any input file) is done as separate shell invocation. > > For example, this input file has four separate shell invocations: > > crash> !cat input > !cur=$(date '+%Y%m%d_%H%M%S'); echo $cur > !echo cur: $cur > |cur=$(date '+%Y%m%d_%H%M%S'); echo $cur > |echo cur: $cur > crash> > > So the "echo" commands have no knowledge of the prior shell command's > setting of the "cur" variable: > > crash> < input > 20130121_112503 > cur: > 20130121_112503 > cur: > crash> > > And with respect to this: > > crash> trace report >./trace_$(date '+%Y%m%d_%H%M%S').txt > > When the command is invoked from within the crash utility, crash simply > opens a file with the name "./trace_$(date '+%Y%m%d_%H%M%S').txt", and > redirects the output to it. The crash utility does not do any kind of > parsing of the output file name for any embedded $(shell-cmd) or > `shell-cmd` usage. > > Maybe you could do something like this in your .crashrc file: > > > trace_output > !ln trace_output $(date '+%Y%m%d_%H%M%S') > extend trace.so > trace report > trace_output > !rm -f output > > Dave > > > > > > > -- > Crash-utility mailing list > Crash-utility@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/crash-utility |
-- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility