Commands like pgrep / ps / pidof doesn't return anything

I’m trying to create a script to enable Presentation Mode automatically while running Ardour.

However, commands like pgrep ardour6, ps -C ardour6 and pidof ardour6 returns nothing, even if Ardour is running (same goes for Cadence). The same commands used with ‘firefox’ or ‘evolution’ instead returns various info as expected. All programs show up in Task Manager as well, while pgrep xfce4-taskmanager also returns nothing :thinking:

What could be the reason for this?

EDIT: commands didn’t work becuse I didn’t pay attention to case sensitivity.
Marking this as solved and continuing work on the script in the original thread.

script error

Add the line at the top of your script to catch everything

#!/usr/bin/env bash
set -ouxe pipefail

check your spelling and your variable assignment and subsequent reference

Thanks, but the missing output happens even if executed directly from the terminal (not inside the script).

However, I do get output from pgrep -f ardour6

computers are stupid - they answer your question - if you don’t get the answer you want - you asked the wrong question.

rephrase your command - use something more generic to find what the process name really is.

and you have supplied way too little information so answers are fluffy at best

Share your script here.

Didn’t really get the script started yet as I stumbled just determining if Ardour is running…

It 's supposed to look something like

#!/bin/bash

if
 # check if Ardour is running
  pgrep ardour >/dev/null
and
  # check if presentation mode is off
then
# switch on Presentation Mode
  xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/presentation-mode -T
end

…but like I said, running pgrep ardour from terminal returns nothing, while e.g. pgrep firefo returns the pid of firefox (even when misspelling like here).

Try now:

#!/bin/bash
pgrep ardour >/dev/null

if [[ $? -eq 0 ]]
then
    xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/presentation-mode -T
else
    notify-send "ardour is not running!"
fi

Make sure this script is executable:

chmod +x ./path_to_script

BTW You can also bind the xfconf-query -c xfce4-power.... command directly to a keyboard shortcut. That way it would be much easier to toggle it on or off when needed.

Thanks a lot! This is a pointer in the right direction, and running the script while Ardour is not running nicely outputs “ardour is not running” to notifications.

BUT, the output is the same WITH Ardour running, because the stumbling stone remains:

While pgrep firefox does return a pid, pgrep ardour returns nothing

It seems this will be an easier solution. Thanks again!

My computer answers the question pgrep firefox, giving the pid of firefox as expected.

My computer doesn’t answer the question pgrep ardour, giving nothing.

Can you help identifying how the second question is wrong?

There is nothing wrong. It just means that there is no process that is named ardour or contains this word.

Try with pgrep ArdourGUI.

But yet the program “Ardour” is runnning. Task Manager identifies it as Ardour. Granted, if started by commandline I have to type ardour6 but it shouldn’t matter much?

After all pgrep firefo (note the missing x) returns the pid of Firefox.

If the Ardour process is not named with anything like Ardour, then that is rather surprising. If it is so, how do I identify the correct name?

By the way, questions like pgrep xfce4-taskmanager and pgrep cadence are also answered with nothing.

Still nothing
EDIT: Missed the case sensitivity. It DOES find the pid, thanks.

It’s case sensitive. Just check your processes with ps aux for example and look at the name of ardour.

You need to find out the name of the process use for example the ps program. Read the man page for options.

By default pgrep is case sensitiv. So a “a” is not the same as a “A”. You might want to try the -i option.

Thanks, I missed that. pgrep ArdourGUI does return the pid of Ardour

This is working, thanks a lot! I’m still interested in making a few adjustments, continuing that mission on the other thread.

You see - that’s what I meant - if the answer you get is not the answer you want - you need to rephrase your question.