El 17/06/14 17:23, Reuti escribió:
Am 17.06.2014 um 15:46 schrieb Txema Heredia:


Basically, the JSV checks the CLIENT parameter. If it is equal to "qlogin", 
then checks if there is any h_rt, and sets a limit on 2h:10min if there is none, while 
showing a colorful warning message to the user so they know that there is a time limit.
Then, it also sets all.q as a hard queue if there is none (or *) and also sets 
the core binding policy.

This works wonders when I run it as a client jsv by using "qlogin -jsv 
/opt/gridengine/default/common/jsv.pl". The message appears, the limit is set, and 
the job runs fine.

But, once I set this as a server JSV (by qconf -mconf global), the time limit 
no longer applies.

As far as I've been able to find the following behaviours differ from running 
it as client or server jsv:

- The 'CLIENT' parameter changed, from 'qlogin' to 'qmaster'. This skips all my 
"if" in the jsv and stops checking for time limits. Can I trust this? Why is 
this 'qmaster' appearing? Now both qsub's and qlogin's show the same command. How can I 
distinguish them?
I found the same:

http://gridengine.org/pipermail/users/2012-September/004808.html

You can check for QRSH_PORT port according to William's post.

Thank you as usual, Reuti.

That QRSH_PORT env variable allows to differentiate between qlogin and qsub commands. But I am still having some problems.

- The jsv_show_params() command shows nothing. Neither on stdout nor in 
/opt/gridengine/default/spool/qmaster/messages This makes debugging really 
cumbersome
For me it's working, being it Bash or Perl.

06/17/2014 17:13:30|worker|pc15370|I|got param: A='sge'
06/17/2014 17:13:30|worker|pc15370|I|got param: GROUP='users'
06/17/2014 17:13:30|worker|pc15370|I|got param: N='test.sh'
06/17/2014 17:13:30|worker|pc15370|I|got param: CMDNAME='test.sh'
06/17/2014 17:13:30|worker|pc15370|I|got param: CMDARGS='0'
06/17/2014 17:13:30|worker|pc15370|I|got param: JOB_ID='11553'
06/17/2014 17:13:30|worker|pc15370|I|got param: M='reuti@pc15370'
06/17/2014 17:13:30|worker|pc15370|I|got param: CLIENT='qmaster'
06/17/2014 17:13:30|worker|pc15370|I|got param: VERSION='1.0'
06/17/2014 17:13:30|worker|pc15370|I|got param: USER='reuti'
06/17/2014 17:13:30|worker|pc15370|I|got param: CONTEXT='server'

My bad. I had my loglevel set to log_warning instead of log_info. Now I can see these messages.

- No message can be sent to the user.  Being it info, warning or error. The 
user won't know if I have set a time limit to his session
Yep, only for "jsv_reject_wait" a message can be displayed. Despite the fact that also for 
"jsv_correct" and "jsv_accept" a message can be specified too.

-- Reuti


Trying to overcome this, I thought of making my JSV add an environment variable "IS_QLOGIN=true" whenever it detects the QRSH_PORT. Then, a prolog script in the execution host would check that environment variable and print, if needed, the timelimit message to the user. BUT, the prolog script cannot print anything to the standard output. (¿because it is run before the actual session begins?)

So, I thought about modifying the .bashrc file (or any other of the several scripts under /etc/profile.d/), and make it read that "IS_QLOGIN=true" environment variable. But, again, the fates are against me, and qlogin commands cannot use the "-v" parameter. Even if I use the jsv_add_env() command in the JSV script, that environment variable is passed to the prolog script, but is nowhere to be found once the "real" qlogin session starts.

I could also ignore both the JSV and the prolog scripts, go directly to the .bashrc script and check there for the presence of (or lack thereof) variables like JOB_ID or JOB_NAME. That would allow me to distinguish between qlogin and qsub sessions (qlogins and ssh environments are identical). But then, again, I won't have access to anything able to tell the script if there is a timelimit set.

The only solution to all this mess that comes to my mind would be to make /etc/motd writable by all users, have the prolog script to modify it with the timelimit message, and then have some sort of contraption in /etc/profile.d/ that resets the motd back to its previous non-qlogin version.

Does anyone have a better (or less-prone-to-failure) idea?

Txema


_______________________________________________
users mailing list
[email protected]
https://gridengine.org/mailman/listinfo/users

Reply via email to