Makine ana makine adı ile alınıyor systemd
.
Bu kılavuzun yanı sıra resmi man sayfalarına da systemd
bakarken çok aşina olmama rağmen , aradığınız şey “belirleyici” bir değer:systemd
Birçok ayar, birim dosyaları yüklendiğinde değiştirilen çalışma zamanı veya birim parametrelerine atıfta bulunan genel birim dosyalarını yazmak için kullanılabilecek özellikleri giderir.
Ve burada çalışacağına inandığım belirli belirleyici %H
, “Ana bilgisayar adı” için olan ve şöyle tanımlanır:
Çalışan sistemin ana makine adı, birim yapılandırmasının yüklendiği zamandaki noktada.
Bu yüzden, örnek systemd
betiğinizi kontrol ederek, [Service]
öbeğinizi şu şekilde değiştirin :
[Service]
Type=simple
User=redmine
Group=redmine
ExecStart=/usr/bin/ruby /home/redmine/redmine/bin/rails server webrick -e production -b %H -p 3000
ip=()
Atama ile satırın gittiğini ve ExecStart
komutun %H
bunun yerine artık kullandığını unutmayın $ip
.
IP adresi almak için bir fikir systemd
.
Bununla birlikte, systemd
sadece %H
“ şartname ” üzerinden bir ana bilgisayar adı sağladığı görülüyor . Bana sorarsanız garip. Dolayısıyla derin bir deneyime sahip systemd
olmasam da, bu yazının amacına ulaşmak için neler yapılabileceğini anladığımı düşünüyorum.
Anahtar, okumak için bir kurulum EnvironmentFile
yapmak systemd
olacaktır. Bu sitede nasıl kullanılacağı hakkında daha EnvironmentFile
fazla bilgi edinin .
Diyelim ki böyle basit bir Bash betiği yarattınız; adlandıralım write_ip_to_file.sh
ve ip=$()
kurulumunuzda işe yarayanla eşleşmesi için IP adresini alma mantığını değiştirmekten çekinmeyin :
#!/bin/bash
ip=$(/sbin/ifconfig eth0 | awk '/inet addr/ {split ($2,A,":"); print A[2]}');
echo IP=$ip > ~/ip.txt;
Tek yapması gereken, IP adresinizi giriş dizininizdeki eth0
bir metin dosyasına vermektir ip.txt
. Format böyle bir şey olurdu:
IP=123.456.789.0
Anladım? İyi. Şimdi systemd
betiğinde, [Service]
öbürünü böyle bir şey olacak şekilde değiştir ; kaydedildiği [your username]
dizinin kullanıcı adıyla eşleşecek şekilde ayarlamayı unutmayın ip.txt
:
[Service]
Type=simple
User=redmine
Group=redmine
EnvironmentFile=/home/[your username]/ip.txt
ExecStart=/usr/bin/ruby /home/redmine/redmine/bin/rails server webrick -e production -b $IP -p 3000
Ve bunun yapması gereken, config dosyasını yüklemek ip.txt
ve $IP
değerini vermektir 123.456.789.0
. Aradığın şeyin bu olduğuna inanıyorum.
Buradaki kilit faktör write_ip_to_file.sh
, açılışta veya belki de systemd
betiğin kendisi tarafından çalıştırılmaktır .
IP adresi almak için başka bir fikir systemd
.
Ancak bununla birlikte, daha iyi bir fikrim var (eğer işe yararsa): Tüm ExecStart
komutu, adı verilen Bash dosyasına taşıyın redmine_start.sh
ve sistemin onu okuyabildiğinden ve çalıştırabildiğinden emin olun. İçeriği redmine_start.sh
şöyle olacaktır; IP adresi alma mantığını, ip=$()
kurulumunuzdakilerle eşleşecek şekilde eşleştirmekten çekinmeyin :
#!/bin/bash
ip=$(/sbin/ifconfig eth0 | awk '/inet addr/ {split ($2,A,":"); print A[2]}');
/usr/bin/ruby /home/redmine/redmine/bin/rails server webrick -e production -b $IP -p 3000
Ve sonra [Service]
yığınını böyle bir şey olacak şekilde değiştir ; kaydedildiği [your username]
dizinin kullanıcı adıyla eşleşecek şekilde ayarlamayı unutmayın redmine_start.sh
:
[Service]
Type=simple
User=redmine
Group=redmine
ExecStart=/home/[your username]/redmine_start.sh
Eğer mantığı izlerseniz, mantığının tamamı ExecStart
içeriyorsa redmine_start.sh
, IP adresini almak için bu Bash numarasını kullanabilirsiniz, onu bir değişkene atayın ve sonra Redmine'yi orada başlatın. systemd
O nasıl başlayacağınızı zaman / script sadece yönetmek olacaktır.
Makinenin IP adresini alınıyor init.d
.
Ve init.d
kullanıcıların referansı için Ubuntu kullanıyorum ve mevcut bir çalışma sistemi IP adresini bir Bash ya da init.d
başlangıç komut dosyasında almam gerektiğinde şöyle bir şey çalıştırıyorum:
ip=$(/sbin/ifconfig eth0 | awk '/inet addr/ {split ($2,A,":"); print A[2]}')
Tabii ki , sisteminizin /sbin/ifconfig
konumunu eşleştirmeniz ifconfig
ve ardından eth0
IP adresini almak istediğiniz ağ arabirimiyle eşleştirmeniz için değiştirmeniz gerekir.
Ancak kurulumunuz ve gereksinimlerinize uyacak şekilde ayarlandıktan sonra, bu, bir arayüzün IP adresini başarıyla alır ve ip
daha sonra $ip
betiğinizdeki gibi erişilebilen değişkene atar .