Systemd servisimin belirli bir kullanıcı tarafından çalıştırılmasını nasıl sağlayabilirim?

81

Ubuntu 14 sunucusundan 15 sürümüne geçtim. Yükseltme işleminden sonra yükseltme komut dosyasını çalıştırırken sorun yaşamaya başladım ve bu systemd'nin yeni varsayılan değer olduğunu okudum. Ben bir linux uzmanından uzağım, bu yüzden lütfen bana kolay gelsin: -)

Başlama komutumun daha önce yazdığı şey şöyledir:

description "NZBGet upstart script"

setuid robert
setgid robert

start on runlevel [2345]
stop on runlevel [016]

respawn

expect fork

script
    exec nzbget -D
end script

pre-stop script
    exec nzbget -Q
end script

Sistemler arası wiki sayfasına geçme 'ye dayanarak, sayfalarımda olabildiğince yakından eşlemek için orada sunulan tabloları kullandım. yeni systemd servis dosyası:

[Unit]
Description=NZBGet Service

[Service]
Type=forking
ExecStart=/usr/local/bin/nzbget -D
ExecStop=/usr/local/bin/nzbget -Q
Restart=on-failure

Bu dosya /home/robert/.config/systemd/user/nzbget.service adresinde bulunuyor. Servisi manuel olarak başlatmak için şunu yapıyorum:

$ systemctl --user start nzbget

Bu harika çalışıyor. Ancak SSH oturumumdan çıktığımda hizmet kapanıyor. Ayrıca, açılışta veya kullanıcı girişinde başlamaz. Başlatma servisi olarak yaptığım gibi davranmasını istiyorum: Açılışta çalışmayı, sürekli çalışmayı ve belirli bir kullanıcı olarak olmasını istiyorum.

Bu yapılandırmayı almak için ne yapmalıyım?

    
sordu void.pointer 19.09.2015 18:17

2 cevap

99

İlk sorun

Birim dosyasının User= bölümünde Group= ve [Service] direktiflerini belirleyebilirsiniz.

İkinci problem

Servisin önyüklemede çalışması için, ana klasörünüze koymamalısınız. Bunun yerine, /etc/systemd/system/ altına koyun. Bu, sistem yöneticisi tarafından (yani, sistem genelinde yeni servisler eklemek için) kullanılan klasördür.

Diğer klasörler şunları içerir:

  • /usr/lib/systemd/system/ , Debian ve Ubuntu altında olsa da, birim dosyaları yüklemek isteyen paketler içindir, çünkü /lib/systemd/system/ ve bin klasörleri,% birleşik lib önekine henüz eklenmemiş olduğundan, klasör /usr/ dir.
  • /usr/local/systemd/system/ , yerel olarak derlenmiş paketlere göre birimler yüklemek içindir.

Üniteyi test etme

Birim dosyası uygun bir konumda olduğunda, birimi her zamanki gibi systemctl start <UNIT_FILENAME> yazarak hemen başlatabilirsiniz. Ünitenin tam yolunu yazmadan çalışmalıdır. Uzantının .service olması durumunda da belirtilmesi gerekmez.

Üniteyi etkinleştirme

Birimi etkinleştirebilmeniz için, [Install] yönergesini eklemeniz gereken WantedBy=multi-user.target bölümünü eklemeniz gerekir. Bu yönerge, hizmetin başlatılması gereken önyükleme işleminin aşamasını belirtir (etkinleştirilmişse). Çoğu hizmet için multi-user.target uygundur.

Bu bilgi eklendiğinde, birimi etkinleştiren systemctl enable <UNIT_FILENAME> 'i kullanabilir, sistemmin bundan sonra otomatik olarak başlatılmasını, belirtilen aşamada başlatma sırasında başlatmasını sağlayabilirsiniz.

    
verilen cevap Yamaho 19.09.2015 18:51
29

systemd'nin "kullanıcı devamlılığı" işlevini kullanmak isteyebilirsiniz. % Co_de% yoluyla etkinleştirildi.

İlgili kullanıcının önyüklemede başlatılması için ayrı bir hizmet yöneticisine neden olur, bu nedenle loginctl enable-linger USERNAME cinsinden kullanıcı tanımlı birimleriniz, hizmet yapılandırmanıza göre önyükleme ve kapanma zamanlarında alınacak ve işlenecektir.

Ayrıca, kullanıcının hizmet yöneticisinde çalışacak olan ve sistemlerden biri olan hizmetlerin / servislerin yönetilmesi ve yapılandırılması için ~/.config/systemd/user 'yi de kullanabilirsiniz.

    
verilen cevap byteborg 11.12.2016 21:28

Etiketlerdeki diğer soruları oku

___ answer360573 ___

Burada öncelikle Microsoft platform geliştiricisinden bir fikir var. .NET ekosistemini hedeflemiyorsanız, en iyi seçeneğinizin Ubuntu olduğunu iddia ederim. Windows yerine Ubuntu'daysanız hemen hemen her platform / dil için araç edinme, yapılandırma ve kullanma araçları çok daha kolay olacak.

Microsoft'un araç zincirinin değeri, YÜKSEK entegre edilmiş olmasıdır. IDE'den Kaynak Kontrole, Proje Yönetimine, Yapım, Dağıtım, Veri Tabanı, Bulut Altyapısı, reklam nauseum . Microsoft, platformlarıyla tam geçiş yapacaksanız bunu çok kolay hale getirir.

Bazılarının da belirttiği gibi, Microsoft Way'den sapmak bir acı olabilir. Veritabanınız için kodunuzu ve Oracle'ı kullanarak .NET'i kullanın ... bu acı çekecektir.

Bir .NET web uygulaması oluşturmak ve bunu Amazon Web Servislerine dağıtmak ... çok kolay değil.

Fakat Microsoft Ekosistemi içinde kalırsanız ... o bebek sizin için alaycı bir kuş gibi şarkı söyleyecektir. Yetkili bir yazılım geliştiricisinin elinde, Microsoft Platformu yetenekli bir atlet için PED'ler gibidir. Bir amatör programcının bir sonraki Facebook'u oluşturmasına izin vermeyecek. Ama parçaların birbirine nasıl uyduğunu anlayan yetenekli bir geliştiricinin bir kenarı olacak.

Ubuntu ile çalışmaya başlama özgürlüğünün (biradaki gibi) argümanı kapıdan çıktı, Microsoft'un sunduğu araçları ücretsiz olarak kullanmaya başlamanızı sağlayan bir dizi program var. Başlangıç ​​şirketinize 3 yıllık lisans veren (kendi araçlarının üretim kullanım lisansları dahil) Bizspark dahil. Ve öğrencilere ücretsiz olarak veren Rüya kıvılcımı.

Yeni dilleri ve platformları keşfetmek ve öğrenmek istiyorsanız, Ubuntu'ya başlamak için daha iyi araçlar bulacaksınız ve Microsoft ekosisteminin dışında bir iş arıyorsanız, ihtiyacınız olacak demektir. Ubuntu ile aşina olmak.

    
___ answer360229 ___

Yine de bir tane daha önemli sebep eklemek isterim; Ubuntu yeni kütüphaneler, diller, IDE'ler ve derleyicilerle denemeler yapmak için harikadır. Her şey bir apt-get away.

Yani, Haskell adlı süslü bir dilden haberiniz var:

%pre%

Oh, Haskell için süslü bir editör duydunuz:

%pre%

C / C ++ kütüphaneleri, sadece %code% onları ve ikili dosyalar ve başlıklar doğru klasörlere gidiyor, ve onlar sadece onlar bile kontrol etmek gerek kalmadan kaynak dosyalarında %code% bunları yapabilirsiniz yer al!

Özünde, günlük çalışma ortamınızı ne kadar hızlı kurabileceğinizi değil. Ayrıca, deneysel bir ortamın ne kadar hızlı kurulabileceğini de gösterir. Linux altında öğrenme deneyimini hızlandıran şeyin bu olduğuna inanıyorum.

    
___ answer360170 ___

Bu tür bir hipotetik, Programmers.SE ’de daha iyi olabilir çünkü buradaki tek taraflı olma olasılığı yüksektir. Ben, birkaç yıldır bir .NET geliştiricisi oldum ve Visual Studio'ya bağlı olarak geldim. Sizin için çok şey var ve evet, özellikle entegre hata ayıklayıcısını seviyorum ... Ancak, insanların Linux'u seçmesinin birkaç nedeni var:

  • Ubuntu ücretsizdir. Windows ve VS çok pahalı olabilir.

  • Ubuntu, ücretsiz . Windows ve VS, bunları nasıl kullandığınız konusunda çok az kontrol sağlar.

  • Ubuntu, kutunun dışında bir programlama ortamıdır. Bash, %code% , %code% , %code% gibi araçlar. Windows tarihsel olarak altyazılardan gelen büyük bir acıdır. Batch dosyaları ve hatta PowerShell ile, Windows'da komut satırı deneyimi Bash ve GNU araçları ile karşılaştırıldığında önemsizliğe girer. Bunların bir kısmını Windows'a yükleyebilirsiniz, ancak aynı deneyim değildir.

  • Karmaşık kurulumların otomatikleştirilmesi ve %code% aracılığıyla kopyalanması kolaydır, Kukla , Chef , Juju , Kumaş ve basit komut dosyası.

  • Bazı şeyler karmaşık IDE'lere ihtiyaç duymaz. Bugünlerde bir Python geliştiricisiyim ve kendi yerleşik araçları ve hata ayıklayıcısından çok memnunum. Bir metin editörü, komut satırı ve kumaş kullanıyorum ... Ve ben .NET'in altında olduğumdan çok daha fazla kontrolüm var. Webapps'imi tek bir Kumaş komutuyla oluşturabilir, test edebilir, işleyebilir ve dağıtabilirim.

    Bu, monolitik IDE'ler olmadığını söylemez. Eclipse ve Netbeans. MonoDevelop. KDevelop4 ve QT Creator. Hepsinin yanında yemin eden kullanıcıları var.

Ubuntu sizin için daha iyi mi ? Kim bilir. Çok yetenekli ve çok özelleştirilebilir bir sistem. Eğer bir şans verirseniz ve iş akışınızın size yardımcı olması için iş akışınızı değiştirirseniz, bunu yapabilmeniz gerekir.

    
___ qstntxt ___

Neden metin dosyalarında veya terminal üzerinden bir program yazıyor (okuduğum gibi) Windows'da Visual Studio gibi IDE (ler) kullanmadan daha iyi bir seçenek mi? Orada bir IDE'nin sağladığı özellikler var mı (örneğin derleme hatalarını gösteriyor) veya manuel işlem mi?

    
___ qstnhdr Ubuntu, Windows üzerinde programlama için bir ortam olarak ne gibi avantajlara sahiptir? ___ answer360166 ___

Her iki aracı, IDE'yi ve metin düzenleyiciyi C ommand- L ile birlikte kullanırım. I nterface (programlamak için CLI olarak adlandırılır).

Linux'un sunduğu, varsayılan yüklemeden başlayarak kullanışlı CLI'dır. Buna ihtiyacınız yoksa ve sadece bir IDE kullanıyorsanız, artık bir fark yoktur (IMHO).

IDE

  • IDE'ler, birçok özelliği entegre etme ve bunları grafik bir arayüzde sunma konusunda çok iyidir.
  • Olumsuz olan, bunun için yeni birini yenebilir. Şimdi, iki öğeniz olacak: IDE ve programlama dili.

Metin editörleri ve CLI araçları

  • Metin düzenleyicileri ve CLI araçlarının öğrenilmesi uzun sürmez.
  • Bir şey çalışmazsa, hangi aracın beklendiği gibi çalışmadığını görmek kolaydır.
  • Her şey metin tabanlı olduğu için Google ile sorunların daha kolay incelenmesini sağlar.
  • Metin editörleri ve CLI araçlarıyla programlama, özellikle eski donanımlarda karşılaştırılınca daha hızlı ve daha hızlı yanıt verir.
  • Düşük çözünürlüklü ekranlarda bile onlarla çalışabilirsiniz.
  • Uzak sunucuda en az kaynak kullanarak programlamanızı ve hata ayıklamanızı sağlar.

Sıklıkla metin tabanlı araçlarla prototipleme yapıyorum. Daha sonra, yönetilecek daha fazla dosya olduğunda, bir IDE'nin bana sunduğu refactoring araçlarına değer veriyorum.

    
___ answer360286 ___

Cevabımı halkaya atacağım (bunların hepsinin de iyi olduğuna inanıyorum).

Alabileceğiniz en temel cevap, her şeyin felsefe ile ilgili olmasıdır.

Microsoft dünyasında, biraz dindar - Mt. Redmond, uygulanan herhangi bir şey istiyorsanız dilekçe vermelidir. Bazen dinlerler, diğer zamanlar sizin fedakarlıklarınız ve sağır kulaklara düşer. Belki de avlanıyorlardı. Microsoft tüm ekosistemi kontrol ediyor - OS'ye sahipler, IDE'ye sahipler ve onları bir SE ağında konuşmak için uygun olmayan yollarla bir araya getiriyorlar. IDE parçaları içinde bile sıkı bir şekilde bağlanmış - buna entegre edilmiş denilebilir, fakat sanırım daha doğru olur. Bazı şeyleri değiştirmek isterseniz, Gates, Windows veya Visual Studio tasarımcılarının açıkça izin vermediği bir şekilde bir şey değiştirmek istediğinizi yasaklar. Ve sonra IE ve IIS, Microsoft sunucuları ve MS SQL Server ve Office gibi teknolojilere atıyorsunuz ... ve her şey güzel ve mutlu bir aile. Ama ailenin bir kısmını geride bırakmak istiyorsan? titreme

Öte yandan, Unix felsefesinden miras alan, her parçanın kendi küçük sorumluluk alanından sorumlu olması gereken Linux'a sahipsiniz. Bir şeyi yapmalı ve iyi yapmalı. Ve tercihen, iletişim, metin dizileri yoluyla gerçekleşmelidir. Başkalarının işaret ettiği gibi, %code% , %code% , %code% vb. Bunun mükemmel örnekleridir. Yapacakları bir şeyi yaparlar ve çok iyi yaparlar. İki öğe yapmanız gerekiyorsa, iki aracı birleştirirsiniz. Hangisi çok kolay?

%code% içeriğin girilmesinin yanı sıra hiçbir şey beklemediğinden, metin oluşturabilecek herhangi bir şey , tekerleği yeniden icat etmek zorunda kalmaz. Sadece %code% kullanabilirler. % Co_de% 'si metin oluşturduğundan, oku metnini okuyabilecek her şey çıktıyı %code% ' den kullanabilir. Metin çok evrenseldir (bunun için bazı istisnalar vardır) ve bu tür şeyleri bir araya getirmek çok kolaydır.

Bunları birleştirmek kolay değildir, aynı zamanda onları ayırmak da çok kolaydır - eğer bir akışı düzenlemeye artık ihtiyacım olmadığına karar verirsem, fakat sonuçları filtrelemek yerine, sonuçları filtrelemek istiyorum. co_de%, bunun yerine %code% adresine geçirebilirim.

Şimdi, bu, Linux ortamındaki gelişmenin arkasındaki temel felsefedir - bu yüzden oradan çıksanız bile, birçok araç benzer türde arayüzler sağlar. Bunları parçalara ayırmanıza veya komut satırı veya bağlantı noktaları veya HTTP aracılığıyla bunlarla arabirim oluşturmanıza izin verir.

Ve bu durumda olmasa bile, açık kaynaklı yazılımınız da var. Linux platformunda çoğu (tümü olmasa da) bir yazılım açık kaynak. Öyleyse, nasıl yazıldığını beğenmezseniz, tamamen, tamamen, yazılımı kendiniz değiştirebileceksiniz. Bu inanılmaz derecede güçleniyor. IDE'yi istediğin gibi kıramaz mısın? Değişiklikleri yapın ve onları geri akışa gönderin ya da projeyi çatallayın. Bir şeyin neden böyle davrandığından emin değil misiniz? Kaynağı kullan, Luke! komut satırında bir şeyi otomatikleştirmek için? Projede hack olun ve değişikliklerinizi yapın. Bir hata veya güvenlik sorunuyla karşılaşın mı? Hey tahmin edin - kendiniz düzeltebilirsiniz, SP3.432vb89234.startdate1eQ'in çıkmasını beklemeniz gerekmez.

İstediğiniz ve istediğiniz araçları birleştirebilirsiniz. Ve eğer yolunda olan bir şey varsa, bunu% 100 değiştirebilirsin. Yeteneğiniz olmasa bile, bu değişikliği geliştirmek için birilerine kesinlikle ödeme yapabilirsiniz - hatta bunu know-how'a sahip başka birine de önerebilirsiniz.

Bunun programlama için daha iyi olmasının nedeni, sürtünme ile karşılaştığınız zaman, bunu iş akışı. Geliştirme zor olduğundan, başarılı bir programcı olmak için düşünmeniz gereken çok şey var ve daha fazlası hakkında düşünmeniz gereken diğer şeyleri düşünmek daha zor".

Sürtünmeyi ortadan kaldırmak önemli.

Yani eğer Microsoft ekosistem din, evde hissettiğiniz yerdir ve size çok fazla / sürtünme sağlamayan araçların keyfini çıkarırsınız ... iyi, muhtemelen sadece iyi o zaman.

Fakat eğer Microsoft Kalıbı (tm) 'ye uymazsanız, patenti beklemede kalırsanız, sürtünme ile karşılaşırsınız. Gelişme bir acı olacaktır. Her dilediğiniz zaman bir şeyler yapabilirdiniz, ama yapamazsınız, bu değerli bilişsel kaynakları tüketecektir. Ve eğer durum buysa, bir Linux geliştirme ortamı muhtemelen sizin için.

    
___ answer360310 ___

Linux neden programlama için daha iyidir

IDE

Visual Studio ve özel amaçlarına hizmet eden Xcode'un yanı sıra, en popüler IDE'ler çok platformdur. Düzinelerce dil için gazi IDE'leri var gibi görünebilir, ancak bunların çoğunda ya Eclipse < http://en.wikipedia.org/wiki/NetBeans/ > NetBeans . Ortak yönleri, hepsinin Java tabanlı olması. Java, Linux'ta, aynı donanım üzerindeki diğer işletim sistemlerinden daha verimli çalışır. Aslında, Java aynı donanımda OS X'den daha Linux'ta% 20 daha hızlıdır. Bu IDE'lerin çoğu Ubuntu Yazılım Merkezi'nde tek bir tıklama ile kurulmaya hazır.

Derleyici

GCC'nin endüstri standardı çok arttı. Herhangi bir şüphenin ötesinde, birincil platformu en iyi desteklendiği Linux'dur. Ve ücretsiz ve royalty free.

Ek araçlar

Linux, diğer platformlarda olmayan, örneğin Valgrind (bellek hata ayıklama, bellek aracı) gibi benzersiz araçlar sağlar sızıntı tespiti ve profilleme). Linux ayrıca, strace ve

OSS'yi yükleme kolaylığı

Ubuntu'nun mükemmel bir paket yöneticisi var. Çoğu durumda, yazılım yükleme sadece %code% 'dir (bunu Ubuntu Yazılım Merkezi veya Synaptic ile de yapabilirsiniz). Yüklendikten sonra, sistem tarafından hata düzeltmeleriyle otomatik olarak güncellenir. Paket sistemi ayrıca bağımlılıkları otomatik olarak takip eder, böylece ihtiyaç duyduğunuz diğer paketler için endişelenmenize gerek kalmaz; otomatik olarak yüklenecekler.

Öte yandan, Windows'da paketleri el ile indirmeniz ve yüklemeniz gerekir ve eğer başka paketlere ihtiyaç duyarlarsa, bunu da manuel olarak yapmanız gerekir. Her bir yazılım paketi ya kendi can sıkıcı güncelleyicisini uygular ya da hiç güncellenmez, sistem çapında bir güncelleme yoktur.

Üretim makinelerinin Linux olması çok muhtemeldir

Arka plan, web, bulut, vb. için herhangi bir programlama yapıyorsanız, hedef makineleriniz Linux'tur. Hedef makinenizle aynı işletim sistemi üzerinde geliştirdiğinizde çok daha az şaşkınlık var.

Elbette, Windows için bir masaüstü uygulaması geliştiriyor olabilirsiniz, ancak bugünlerde bu programcılar için bir iş alanı pazarıdır.

    
___ answer360247 ___

Soruya daha genel düşüncelerimi sunmak istiyorum:

"Linux neden programlama için daha iyi bir ortamdır?"

Bence, Linux üzerinde geliştirmenin en önemli sebebi, çoğu yazılım içersinde tam bir anlayışa sahip olmanızdır. İlgilendiğiniz şeylerin aslında nasıl çalıştığını öğrenebilirsiniz. Bu, iyi ya da kötü uygulamaları öğrenip uyarlamanıza yardımcı olur. Bu, fikirleriniz için daha fazla çeşitlilik sağlar.

    
___ answer360246 ___
  

Neden metin dosyalarında veya terminal aracılığıyla bir program yazıyor (okuduğum gibi), Windows'da Visual Studio gibi IDE (ler) kullanmanın daha iyi bir seçeneği var mı?

Öyle değil, bunun tam tersi olduğunu söyleyebilirim. Genel olarak, insanlar daha iyi oldukları araçları tercih ederler. Kullandığınız araçların tipi yazım programlarının kolaylığından yararlanabilir. Örneğin, Java programlarını vim ile yazabilirim ancak Eclipse veya IntelliJ gibi tam teşekküllü IDE'lere karşı gerçekten çok üretken. Jon Skeet, Neden bir IDE kullanıyor sorusuna büyük bir cevap verdi.

Asıl soruya geri dönersek, Linux'un daha iyi olduğu tek şey C programlamadır. Linux'ta yapabileceğiniz diğer her şey, Windows ve tersi de yapabilirsiniz (programlama bilgisi). C programlama, tarihsel nedenlerden dolayı Linux'ta daha iyidir, harika bir araç seti sunar (Windows BTW'ye erişebilir, ancak bunun için Linux'u kurmak çok daha kolaydır). Aynı şekilde, C # yazıyorsanız ve .NET gibi ise, Windows açık nedenlerle daha iyi bir seçimdir. Diğer her şey tamamen özneldir ve her iki tarafın artılarını ve eksilerini duyacaksınız.

    
___ answer360169 ___

Programlama için kullandığınız hangi araçlar (metin editörü veya IDE) bir seçim meselesidir. Genel olarak şunu söyleyebilirsin: Yeni başlayanlar ve çok küçük projeler, yüce metin veya değiştirilmiş bir gedit sürümü gibi daha iyi metin editörleri kullanma eğilimindedir. Sadece düz metin editörlerini kullanırken daha çok şey öğrendiğiniz için. IDE'ler, işlerinizi otomatikleştirerek (Visual Studio'un yaptığı gibi) öğrenme sürecinizi bozabilir.)

Profesyoneller söz konusu olduğunda, birçok araç ve dil ile uğraşırken, IDE'ler işe yarar, çünkü izin verirseniz sizin için çok daha fazlasını yapabilirler. Programlamak istediğiniz dile bağlı olarak, seçebileceğiniz birçok IDE var. Daha iyi olanlar ve daha az kullanışlı olanlar var.

Kişisel deneyimim, bir Ubuntu İşletim Sisteminin Windows'a göre geliştirme için çok daha hızlı ve kolay olmasıdır. Benim kullandığım araçların ve programların çoğunun Linux üzerine kurulu olduğu ve en sevdiğim programlara indirme bağlantıları için internette arama yapmak zorunda olmadığım için bunun sebebi var. Bu sadece bir 'apt-get install1 program2 program3'. Karşılaştırma: Programlama için ihtiyaç duyduğum herşeyi (şirket, özel değil, daha hızlı olacaktır) içeren yeni bir Windows kurulumunu kurmak ve yapılandırmak için 3 iş gününe ihtiyacım var, fakat Ubuntu'da aynı görev için sadece bir gün.

Benim deneyimim, Linux'u programlama için değiştiren programcıların (çoğu zaman) teknik bağlamların daha derin bir anlayışına ve temel özelliklerinin nasıl çalıştığıyla ilgilidir. Mac ve Windows kullanıcıları, bir şeyin neden bu şekilde çalıştığını veya neden böyle olmadığını bilmezler. Aslında Linux ile çalışmaktan bir şey öğrenebilir ya da Linux'a geçiş yapmayı öğrenenler için bir şey öğrenebilirseniz emin değilim.

Umarım "blafasel" biraz yardımcı olur ...

    
___ answer360600 ___

Linux dağıtımının bir IDE olduğunu

iddia ediyorum.

Bir başlangıç ​​için, Unix bir geliştirme ortamı olarak baştan tasarlandı. Programcılar için programcılar tarafından yazılmıştır. Çoğu Unix ve Linux, varsayılan yapılandırmalarında geliştirme araçlarıyla birlikte gelir. Ve eksik parçalar sadece %code% (veya eşdeğer) uzaklıktadır. Öte yandan, Windows, IDE'yi yükleyene kadar, ucuz olmayan ya da önemsiz bir süreç olana kadar korkunç bir geliştirme ortamıdır.

IDE’lerin GCC’yi kullanmaktan daha fazla sıkı bir şekilde bağlandıkları olması nedeniyle bir IDE daha entegredir. Git ve Vi (örneğin). Sıkı birleştirme, 'intellisense' gibi şeylerin daha iyi çalışmasına izin verir. Ancak diğer yandan, gevşek kuplajın birçok avantajı vardır (örneğin, esneklik, değişebilirlik, kilitlenme eksikliği).

Ve derleyici tasarımındaki ilerlemeler (LLVM gibi kolayca ayrılabilen ön uçları olan derleyiciler) sonuçta gevşek bağlanmış ortamlarda bile vurgulanan sözdizimi hatası gibi özellikler için daha iyi destek anlamına gelebilir.

    
___ answer402539 ___

Bence asıl sorunun şu olabilir: "Ubuntu'da çalışacak herhangi bir Visual Studio alternatifi var mı, çünkü olmayacak mı?"

MonoDevelop.

Çalışılabilir, ancak VS ve tüm özellikler için kullanılıyorsa bundan nefret edersiniz.

Bir metin düzenleyici kullanmanın hiçbir avantajı yoktur. Intellisense denen güzel şeyi hatırlıyor musun? Olmuyor (ama MonoDevelop gibi bir şey var). Umarım bu yardımcı olur.

    
___ answer360882 ___

Hız, sıralama yanıtıdır.

Bunu, Visual Studio veya QtCreator gibi grafiksel bir IDE ile kısa kesimler kullanmam gerektiğinde fareyi çok fazla kullandığımı buldum. Bağlamı her değiştirdiğinizde beyninizi duraklatmanız, hedefinize odaklanmak ve eylemi beklemek zorundasınız. F5 tuşuna basılması ise daha hızlıdır.

Artık, vim, Emacs veya hoş görünümlü düğmelere sahip olmayan başka bir şey kullanıyorsanız, tuşa basmaya odaklanacaksınız, bir yönteminiz var ve rutininden daha hızlı oluyor.

Hatalar tercih ettiğim bir komut satırı arayüzü ile daha ayrıntılı bir şekilde sunulur ve ayrıca derleme sırasında geri bildirim verir. Visual Studio'dan nefret ettiğim bir şey, varsayılan bir derleme yaptıklarını gösteren küçük bir simgedir, sonra bir hata listesi alırsınız.

Dar bir görünümde okunabilirliğe yardımcı olan 80 sütun genişliğini koruyacaksınız, 200 sütun genişliğine yayılan kodlar gördüm. 80 sütuna uygun kod ile, bir seferde 4/5 penceresi açabilirsiniz.

Bir CLI düzenleyicisi ile uzaktan kodlayabilirsiniz, Visual Studio'nuza yavaş (RPC metni ile karşılaştırıldığında) bir oturuma gerek yoktur. Bir GSM bağlantısını kodlayabilirsiniz.

Görsel form geliştirme tür berbattır. Bir GUI IDE'ye ekleyebileceğiniz bir avantaj, ekranlarınızı ve daha hızlı bir şekilde çizebilmenizdir. Ancak deneyimlerimde bir prototip için gayet iyi ama genellikle manuel olarak kodla daha iyi sonuçlar elde edersiniz. VS2012 Kod Analizcisi bu sabah beni Visual Studio tarafından otomatik olarak oluşturulmuş kodla ilgili 200'den fazla sorun hakkında uyardı mı?!?!?

    
___ answer360917 ___

Felsefe konusunda: Ubuntu / Linux, bilgisayar programcısının dahili ve donanımlara doğrudan erişmesine izin verirken, Windows bir çeşit bekçidir. Programlama söz konusu olduğunda bu önemli bir felsefi konudur. Dolayısıyla, felsefi olarak konuşursak, bu özellik bir avantajdır, kullanıcının bu bilginin yeterince bilgili veya teknik olarak farkında olup olmamasına bağlı olacaktır.

Programlama konusunda: Ubuntu / Linux'un tüm sistem mimarisi, bir şeyi yapan küçük ve basit programların Unix geleneği üzerine kurulmuş ve daha karmaşık şeyler yapmak için bunları bir araya getirmiştir. Bir programcı için bu mimari inanılmaz derecede güçlüdür ve benim görüşüme göre, Unix'in her platformdaki diğer yazılım mimarilerine karşı uzun vadede geçerli olmasının nedeni budur. Unix'in hâlihazırda baskın olmadığı birkaç yerden biri masaüstüydü, ancak zamanla değişecek. Ubuntu gibi dağılımlar bu evrimi görmeye yardımcı oluyor.

Bununla birlikte, Windows üzerinde bazı çok iyi programlama ortamlarının bulunduğuna itiraz etmiyorum. Bir şirket ortamında programlama için, bunlar genellikle hakimdir.

    
___ Bir tar arşivinden belirli bir dosyayı nasıl çıkarırım?