Re: pgrep/pkill in rc script

2018-06-06 Thread Steven Shockley

On 6/4/2018 4:57 PM, Stuart Henderson wrote:

pgrep uses regular expressions, so if you're matching the full string
you'll need to escape the +'s.

The 16-character limit doesn't apply here, that's if you're only matching
on the command name. rc.d / pgrep -f match on the full process title instead.
Run top(1) and compare before/after pressing C.


Ah, that makes sense.  Thanks!



Re: pgrep/pkill in rc script

2018-06-04 Thread Stuart Henderson
On 2018-06-02, Steven Shockley  wrote:
> I have a 6.3 machine running four Minecraft instances (i.e. Java apps). 
> I recently changed the rc script for one of them to use additional Java 
> command-line arguments.  I believe I ran into something similar to 
> https://marc.info/?l=openbsd-misc&m=138268000201733, where pgrep would 
> no longer match the command arguments since it was longer than 16 
> characters (although in my case it didn't match either from script or 
> shell).  However, the 16-character limit doesn't seem right, because my 
> old command was already longer.
>
> Old command:
> /usr/local/jre-1.8.0/bin/java -Xms1536M -Xmx1536M -jar 
> /var/games/minecraft/minecraft_server.jar nogui
>
> New command:
> /usr/local/jre-1.8.0/bin/java -server -Xms1536M -Xmx1536M 
> -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSIncrementalPacing 
> -XX:ParallelGCThreads=2 -XX:+AggressiveOpts -jar 
> /var/games/minecraftss/minecraft_server.jar nogui
>
> So, with the old command, it's only comparing "-Xms1536M -Xmx" at 16 
> characters (or /usr/local/jre if it's referring to the executable), so I 
> would think it wouldn't have worked with the old command, either.
>
> Fortunately, I was already running the four as different users, so I 
> could work around it by using pgrep/pkill -U.  However, I'm curious 
> about the 16-character limit; I looked at the source for pkill, and the 
> only limit I saw was _POSIX2_LINE_MAX.  Or was the limit a red herring, 
> and something else was causing my problem?
>
> Thanks.
>
>

pgrep uses regular expressions, so if you're matching the full string
you'll need to escape the +'s.

The 16-character limit doesn't apply here, that's if you're only matching
on the command name. rc.d / pgrep -f match on the full process title instead.
Run top(1) and compare before/after pressing C.




pgrep/pkill in rc script

2018-06-02 Thread Steven Shockley
I have a 6.3 machine running four Minecraft instances (i.e. Java apps). 
I recently changed the rc script for one of them to use additional Java 
command-line arguments.  I believe I ran into something similar to 
https://marc.info/?l=openbsd-misc&m=138268000201733, where pgrep would 
no longer match the command arguments since it was longer than 16 
characters (although in my case it didn't match either from script or 
shell).  However, the 16-character limit doesn't seem right, because my 
old command was already longer.


Old command:
/usr/local/jre-1.8.0/bin/java -Xms1536M -Xmx1536M -jar 
/var/games/minecraft/minecraft_server.jar nogui


New command:
/usr/local/jre-1.8.0/bin/java -server -Xms1536M -Xmx1536M 
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSIncrementalPacing 
-XX:ParallelGCThreads=2 -XX:+AggressiveOpts -jar 
/var/games/minecraftss/minecraft_server.jar nogui


So, with the old command, it's only comparing "-Xms1536M -Xmx" at 16 
characters (or /usr/local/jre if it's referring to the executable), so I 
would think it wouldn't have worked with the old command, either.


Fortunately, I was already running the four as different users, so I 
could work around it by using pgrep/pkill -U.  However, I'm curious 
about the 16-character limit; I looked at the source for pkill, and the 
only limit I saw was _POSIX2_LINE_MAX.  Or was the limit a red herring, 
and something else was causing my problem?


Thanks.