On 2018-06-02, Steven Shockley <steve.shock...@shockley.net> 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.


Reply via email to