Ekran oturumu başlatmak için crontab'ı nasıl kullanabilirim?


12

Bir crontab girişi oluşturmak istiyorum, böylece ekran başlar, bir oyun sunucusu başlatır ve ayrılır. Bu, sunucunun yeniden başlatılması ve bunun benim için otomatik olarak başlamasını istiyorum.

0 0 0 0 0 (komut)

başlangıçta çalıştırılmalıdır.

~ / Cube / server.sh konumunda bulunan bir kabuk dosyasını çalıştırır.


Bu makinede kullanıcı mısınız veya init komut dosyalarına erişiminiz var mı?
Corey S.


@Dennis: Evet, beğendim. Ancak, çalıştığı oyun sunucusunun erişmesi gereken bir tür konsola sahip olmadığını varsayamayız (yani her zaman ön planda çalışır). Yoksa neden ekranla uğraşasın ki? Tabii ki, nohup ve arka planın farkında değil.
Corey S.

Bu makinede bir kullanıcıyım.
Victor

Yanıtlar:


15

Böyle bir şey işe yaramalı. Bu örnek bir ekran oluşturur ve "üstte" çalışır:

screen -d -m top

Crontab'ınızda belirtildiği gibi, böyle bir şey yapmak istersiniz:

@reboot /usr/bin/screen -dmS gameserver-screen /opt/mycoolgame/bin/gameserver

Tabii ki, oyun sunucusu "normal" bir ortam seti gerektiriyorsa, aşağıdakilere yaklaşabilirsiniz:

@reboot (. ~/.profile; /usr/bin/screen -dmS gameserver-screen /opt/mycoolgame/bin/gameserver)

1
. ~/.profilekısım ne yapıyor ?
Victor

Zorla cron girişi için ortamı ayarlar. Onsuz, sadece birkaç çok özel giriş alırsınız. (Ayrıntılar için man crontab'a bakınız)
Corey S.

Oyun sunucusunu yürüten bir .sh dosyam var, bu yüzden bu işe yarar mı? @reboot (. ~/cube; /usr/bin/screen -dmS gameserver-screen ./server.sh)
Victor

Muhtemelen bunu yapmanın en iyi yolu. Bu işe yararsa, muhtemelen profil hakkında endişelenmenize gerek yoktur, ancak tam bir $ PATH vb.
Corey S.

5

Bu yeterli olmalı ... koş

$ crontab -e

Ardından şunu girin:

@reboot screen -dmS Victor

Lütfen bu 'Victor' komutunun bir komut dosyasını çalıştırmakla nasıl ilgili olduğunu açıklayabilir misiniz - örneğin OP'nin istediği komut dosyası?
Patrick

1
-S sadece oturum adı içindir
atx

4

Sadece tamlık uğruna, tmux'u amaç yerine kullanmak da mümkündür screen( karşılaştırma için bu bağlantıya bakın ):

@reboot tmux new-session -d -s yourNameOfTheSession "your command to run"

0

Benzer bir durumum vardı, ancak diğer mantıksız kısıtlamalar nedeniyle crontab kullanamadım. Aslında inittab çağrı ekranım vardı. (bilgileri gizlemek için bazı adları değiştirdi):

XXX:5:respawn:/bin/su - useraccount -c "screen -D -m -c /home/xxxxxx/file.screenrc"

'File.screenrc' içinde birkaç seçenek ayarladığım yer:

sessionname obscuresessionname
multiuser on
cd
screen /home/xxxxxxx/programtostart

Bu şekilde önyükleme sırasında başladı ve program ölürse veya ekran kapanırsa yeniden ortaya çıkar. Geleneksel olarak kabul edilmemiş olabilir, ancak birkaç garip çevre gereksinimi etrafında çalışmak zorunda kaldım. Gerçi bunu indirmemiz gerekiyorsa, bu hattı yorumlamak ve oturumu öldürmek zorundayız. Sonra onu geri getirmeye hazır olduğunda, rahatsızlık ve init q.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.