如何更改可执行文件向系统呈现的名称

如何更改可执行文件向系统呈现的名称

忘了说了,运​​行在Suse Tumbleweed上,桌面是KDE Plasma。

我的目录中有bin一个符号链接mpv

$ ls -l bin/Play 
lrwxrwxrwx 1 boffi users 12 Feb 11 12:33 bin/Play -> /usr/bin/mpv

我有一个脚本,可以调用Play,嗯,播放随机音乐文件

$ cat bin/play_alarm 
#! /usr/bin/bash

files=($(find $HOME/Music/$1 -type f))
n_files=${#files[@]}
index=$(($RANDOM%$n_files))
file=${files[$index]}
body=$(
  echo $file | sed -E '
    s./home/boffi/Music/..
    s./[01][0-9]_./.
    s/\..*$//
    s./. → .g
    s._. .g
    s| → ([^→]+)$| → <b>\1</b>|')
notify-send -u low -a "The Alarm Player" --expire-time=10000 Playing "$body" &
Play --no-video --no-terminal ${files[$index]} 

根据我的理解,我可以使用名称来杀死mpv的特定问题,但是mpvPlay

$ bin/play_alarm & sleep 10 ; killall Play ; sleep 2 ; killall mpv
[1] 1385
Play: no process found
$ Terminated

[1]+  Exit 143                bin/play_alarm
$ 

我的问题是“如何更改可执行文件向系统呈现的名称”。当然是我做错了什么,或者说我有严重的误会。

附录在你问之前,如果我play_alarm从命令行启动,我可以使用它来杀死它killall play_alarm,但通常play_alarm是由 Plasma desklet 启动,然后

  1. killall play_alarm不起作用,
  2. killall Play不起作用,
  3. killall mpv消除警报和mpv正在运行的每个问题。

聚苯乙烯如果你建议将 PID 保存在临时文件中,我宁愿不这样做,但如果其他一切都失败了......

答案1

我尝试过sleep并得到以下观察结果:

ln -s /usr/bin/sleep  slapen
./slapen 900 &

ps -ef | grep slapen然后给出:

ljm      2623965 2534378  0 16:53 pts/5    00:00:00 ./slapen 900
ljm      2623968 2534378  0 16:54 pts/5    00:00:00 grep slapen

因此,该过程的名称slapen不是sleep您建议的名称。

pkill slapen

给出:

[1]+  Terminated              ./slapen 900

这就是你似乎需要的。

答案2

为了澄清我在问题下的评论,

$ ls -l ~/bin/Play
lrwxrwxrwx 1 boffi users 12 Feb 11 12:33 /home/boffi/bin/Play -> /usr/bin/mpv
$ Play --no-terminal Music/Aldous_Harding/Party/06_Horizon.opus & sleep 3 ; ps
[1] 16098
  PID TTY          TIME CMD
11599 pts/4    00:00:00 bash
16098 pts/4    00:00:00 mpv
16121 pts/4    00:00:00 ps
$ 

另一方面

$ ls ~/bin/mysleep /home/boffi/bin/mysleep
$ mysleep 10 & ps 
[1] 22546
  PID TTY          TIME CMD
11599 pts/4    00:00:00 bash
22546 pts/4    00:00:00 mysleep
22547 pts/4    00:00:00 ps
$ 

因此我们可以得出结论,出于某种原因,甚至没有任何原因,mpv将其名称改回mpv

相关内容