Pourquoi ne devrais-je pas “le pari de l'avenir de l'entreprise” sur les scripts shell?[fermé]

StackOverflow https://stackoverflow.com/questions/17231

  •  08-06-2019
  •  | 
  •  

Question

J'ai été à la recherche à http://tldp.org/LDP/abs/html/why-shell.html et a été frappé par:

Quand ne pas utiliser des scripts shell

...

  • Applications essentielles à la Mission sur laquelle vous êtes le pari de l'avenir de la société

Pourquoi pas?

Était-ce utile?

La solution

À l'aide de scripts shell est très bien quand vous êtes à l'aide de leurs forces.Mon entreprise a une certaine classe 5 de commutateurs logiciels et le traitement des appels de code et la mise à disposition de l'interface est écrite en java.Tout le reste est écrit en KSH - DB décharges pour les sauvegardes, l'élagage, le fichier journal de rotation, et tous les rapports automatisés.Je dirais que toutes ces fonctions de soutien, bien que non directement lié à l'achat-chemin, sont essentiels à la mission.Surtout la DB interaction.Si quelque chose n'allait pas avec le DB-code interaction et de l'objet de dumping à l'appel des tables de routage, il pourrait nous mettre hors de l'entreprise.

Mais rien ne fait jamais de mal se passer, parce que les scripts shell sont la langue parfait pour des trucs comme ça.Ils sont petits, ils sont bien compris, la manipulation des fichiers, c'est leur force, et ils sont stables.Ce n'est pas comme KSH09 va être une réécriture complète parce que quelqu'un pense qu'il doit compiler en code octet, c'est donc une interface stable.Franchement, la configuration de l'interface écrite en Java va déglingués assez souvent et les scripts shell n'ai jamais foiré que je m'en souvienne.

Autres conseils

Je pense que l'article indique une très bonne liste des raisons de ne pas utiliser des scripts shell - avec la seule essentielles à la mission de balle-vous être plus une conclusion sur la base de toutes les autres balles.

Avec cela dit, je pense que la raison pour laquelle vous ne voulez pas construire une mission essentielle de l'application sur un script shell est parce que, même si aucun des autres points de balle s'appliquent aujourd'hui, toute demande qui va être maintenue sur une période de temps évoluer au point d'être peu par au moins l'un de ces pièges potentiels à un certain point.....et il n'y a pas quelque chose que vous allez vraiment être en mesure de faire à ce sujet, sans qu'il soit complet ne plus venir avec une solution....en vous souhaitant de vous servir quelque chose de plus industrielle de la force depuis le début.

Évidemment, c'est un peu un homme de paille pour m'abattre.Je suis vraiment intéressé à pourquoi les gens croient scripts shell devrait être évité dans les "applications essentielles à la mission", mais je ne peux pas penser à une raison impérieuse.

Pour exemple, j'ai vu (et écrit) quelques scripts ksh que d'interagir avec une base de données Oracle à l'aide de SQL*Plus.Malheureusement, le système ne pouvait pas à l'échelle correctement parce que les requêtes ne pas utiliser des variables de liaison.Frapper l'un contre scripts shell, droit?Mal.Le problème n'était pas avec les scripts shell, mais avec SQL*Plus.en fait, le problème a disparu lorsque j'ai remplacé SQL*Plus avec un script Perl qui se sont connectés à la base de données et utilisées lier les variables.

Je peux facilement imaginer de placer les scripts shell dans le vaisseau spatial logiciel de vol serait une mauvaise idée.Mais le Java ou le C++ peut être tout aussi mauvais choix.Le meilleur choix serait de quelque langue que ce soit (montage?) est généralement utilisé à cette fin.

Le fait est, si vous utilisez des saveurs de Unix, vous êtes à l'aide de scripts shell dans des situations critiques en supposant que vous pensez que le démarrage est essentiel à la mission.Lorsqu'un script a besoin de faire quelque chose que shell n'est pas particulièrement bon, mettez-vous cela dans la partie d'un sous-programme.Vous n'avez pas de jeter le script de gros.

Les Scripts ne sont rien de plus ou de moins que les programmes d'ordinateur.Certains diront que les scripts sont moins sophistiquées.Ces mêmes gens vont généralement dire que vous pouvez écrire sophistiquée code dans les langages de script, mais que ces scripts sont vraiment pas de scripts, pas plus, mais à part entière des programmes, par définition.

Quoi que ce soit.

La bonne réponse, à mon avis, est "ça dépend".Qui, en passant, c'est la même réponse à l'inverse de la question de savoir si vous devez placer votre confiance dans des exécutables compilés pour des applications à mission critique.

Bon le code est bon, et le mauvais code est mauvais s'il est écrit comme un script Bash, un Windows fichier CMD, Python, Ruby, Perl, de Base, de Suite, Ada, Pascal, Common Lisp, Cobol, ou compilé C.

Qui est pas pour dire que le choix de la langue n'a pas d'importance. Il y a de très bonnes raisons, parfois, pour le choix d'une langue particulière ou pour la compilation vsl'interprétation (performance, d'évolutivité, de capacité, de sécurité, etc).Mais, toutes choses étant égales par ailleurs, je ferais confiance à un shell script écrit par un programmeur sur un équivalent C++ programme écrit par un doofus n'importe quel jour de la semaine.

C'est probablement scripts shell aider à prendre une entreprise en l'avenir.Je sais juste du point de vue programmation que je gaspille beaucoup de temps à faire des tâches répétitives, j'ai délégué à des scripts shell.Par exemple, je sais que la plupart des commandes de subversion pour la ligne de commande, mais si je peux considérer l'ensemble de ces commandes dans un script, je peux le feu à volonté-je gagner du temps et de l'énergie mentale.

Comme quelques autres personnes ont dit que la langue est un facteur.Pour mon court-ne-veulent-se souvenir des étapes et de la colle programmes j'ai entièrement confiance en mes scripts shell et de s'appuyer sur eux.Cela ne veut pas dire que je vais construire un site web qui s'exécute bash sur le backend, mais je vais sûrement utiliser bash/ksh/python/que ce soit pour m'aider à générer le squelette du projet et gérer mes d'emballage et de déploiement.

Quand j'ai lu ce devis, je me concentre sur le "applications"la partie plutôt que de la "mission critique" de la partie.

Je l'ai lu comme disant bash n'est pas pour l'écriture d'applications, c'est pour, ainsi, la création de scripts.Alors bien sûr, votre application peut avoir certains de ménage des scripts, mais n'allez pas écrire critical-business-logic.sh car une autre langue est probablement mieux pour des trucs comme ça.

Je parie que l'auteur est de montrer qu'ils sont à l'aise avec certains aspects de qualtiy wrt les scripts shell.Qui tests unitaires scripts BASH par exemple.

Aussi les scripts sont plutôt fortement couplé avec le système d'exploitation, ce qui pourrait être quelque chose d'une chose négative.

Peu importe, nous avons tous neec une fexibilité outil pour interagir avec le système d'exploitation.Il est lisible par l'homme de l'interaction avec l'os que nous utilisons, l'un de ses semblables à l'aide d'un tournevis à l'aide des vis.La ligne de commande sera toujours un atool nous avons besoin d'admin,programmeur ou d'un réseau .Regardez la fenêtre, ils ont même élargi sur leur powershell.

Les Scripts ne sont pas appropriés pour la mise en œuvre de certaines des fonctions essentielles, car ils doivent tous les deux +r et +x les autorisations de fonctionner.Les exécutables uniquement besoin de l' +x.

Le fait que le script a +r signifie que les utilisateurs peuvent être en mesure de faire une copie du script, modifier/subvertir, et d'exécuter leurs édité Cuckoo's Egg version.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top