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.