シェル - シェルスクリプト - 二重起動しない


 クラウディア


1. 概要
2. 対策

1. 概要

 「awesome」というデスクトップを使っていた時の話です。  細かい、わかりにくいところは、「awesome - 共通事項」をご参照ください。  「awesome」で、「xfce4-clipman」というクリップボードマネージャを使いたくて、ログイン時に自動起動しようと

~/.config/awesome/rc.lua
 内に

-- Autostart applications
awful.spawn.with_shell("~/.config/awesome/autostart.sh")
 を記述。

~/.config/awesome/autostart.sh
 内に

#!/bin/sh

・・・	略	・・・

xfce4-clipman &
 てなことを書いて、実行権限をつけておりましたらば・・・・。  思い通りに、ログイン時に起動できたのはいいものの。  ログイン状態で、「awesome」を再起動すると

 てな、ダイアログが表示されます。

 二重起動しちゃうから、だめってんですな・・・。

 以下の中で、「sh」の関数の文法に関しては、「Functions - Shell Scripting Tutorial」を参考にさせていただきました。

2. 対策

 「ArcoLinux 20.7.5 awesome」に対策の実例がありました。  同じものを少しはしょって書きますと。

#!/bin/bash

function run {
  if ! pgrep $1 ;
  then
    $@&
  fi
}

run "xfce4-clipman"
 と書いておる。  「function」で、「pgrep」を使用して、実行中か判断し、実行中でない時だけ、起動するわけです。  うまく、二重起動を防いでおりますな。  「bash」でなく、「sh」で書こうとして、少し戸惑いがありましたが「sh」で書くならば

#!/bin/sh

run()
{
  if ! pgrep $1 ;
  then
    $@&
  fi
}

run "xfce4-clipman"
 ということになります。  これで、うまいこといったのだ!  めでたし、めでたし。  これは、使えるわ。

audiobook.jp
AbemaTV 無料体験
U-NEXT
earthcar(アースカー)
EMEET 1
それがだいじWi-Fi
損保との違い
ベルリッツ
Amazonギフトカード
薬屋の独り言
JETBOY
ネットオークションの相場、統計、価格比較といえばオークファン
ハイスピードプラン
アフィリエイトのアクセストレード
サウンドハウス
5G CONNECT
健康サポート特集
TikTok Shop 【リピート用プログラム】
EaseUS
【usus ウズウズ】
葬送のフリーレン Prime Video