2010-08-12 4 views

Répondre

2

Définir la valeur par défaut sur le disque à partir duquel l'application s'exécute (ou vous devrez peut-être essayer chaque disque successivement s'il s'agit d'une application vraiment grande ou distribuée). Ensuite, la commande est

dispositif show/fichiers/nosystem

Si vous êtes sur une version plus récente de VMS et les listes sont trop longues, vous pouvez diriger avec une recherche en faisant ceci:

pipe show périphérique/fichiers/nosystem | recherche sys $ input (nom du script perl)

+0

Merci! Désolé, je ne peux pas encore voter. Cela me met sur la bonne voie, mais pas tout à fait résoudre mon problème. (a) J'ai besoin d'exécuter le script simultanément avec la commande qui va regarder, renvoyer les résultats pendant l'exécution ou après (b) en essayant d'utiliser show device/files/nosystem, il me semble que je ne récupère que le Perl lui-même le résultat, aucun des fichiers ouverts par le script Perl (en utilisant des choses comme "ouvrir" et "cravate") – Jason

+0

J'ai compris (b). Maintenant, tout ce qui reste est (a). – Jason

0

Jason, j'ai besoin de plus de précisions pour a). Voulez-vous dire que vous voulez exécuter votre script perl dans un fichier de commandes et que le fichier de commandes surveille les fichiers auxquels le script perl accède? Ou autre chose?

+0

Je pense que je peux laisser de côté le script DCL pour éviter toute confusion. Disons simplement que je veux exécuter un script perl xyz.pl à partir de la ligne de commande. À la fin de xyz.pl, je voudrais un rapport de quels fichiers il a ouvert. La commande que vous avez fournie ne s'exécute qu'à un instant donné. Et il doit être exécuté séparément du script Perl. Exécuter cette commande plusieurs fois ne sera pas utile non plus car je pourrais manquer un fichier qui a été ouvert et fermé entre ces multiples exécutions. – Jason

+0

Voici un moyen (pas forcément le meilleur) d'atteindre mon objectif sous Linux: strace -e open perl test.pl 2> & 1 | grep O_APPEND. Cela me dira chaque fichier que test.pl a ouvert en mode append. J'espère que cet exemple clarifie la question. – Jason

0

Hmm, je ne suis pas sûr de ça. Peut-être ajouter une balise linux à votre message pour que certaines personnes de Linux puissent voir cela et entrer. Je ne sais pas pourquoi votre programme Perl ne sait pas quels fichiers il a ouverts. C'est votre programme, n'accède-t-il pas aux fichiers auxquels vous lui avez demandé d'accéder? Ou si vous êtes en train de calculer les noms de fichiers (ce que j'ai fait dans cobol, mais savez quand même dans quel répertoire les trouver, et quel schéma de nommage ils utilisent), vous aurez toujours des indices comme ceux que je mentionne. Aussi, puisque c'est votre programme, et si vous êtes en train de calculer les noms de fichiers, ne faites-vous pas aussi que votre programme Perl sorte de son propre rapport sur les fichiers? Comme, juste après avoir calculé le nom de fichier, faites-le copier la chaîne de nom dans un fichier de rapport séparé.

+0

Je dois pouvoir faire cela pour un script Perl arbitraire sans le modifier pour rendre compte des fichiers ouverts. – Jason

1

Vous devez trouver la documentation pour les fonctionnalités non documentées VMS :-)

Sérieusement, je pense que set watch pourrait faire ce que vous voulez. Si vous émettez

$ set watch file/class=(all,nodump) 
$ perl yourperlscript.pl 

Vous obtiendrez des charges de sortie qui, espérons-le, incluront ce que vous voulez. Je ne l'ai pas fait pendant des années, vous avez probablement ajuster les options pour l'affiner. Voir http://www.parsec.com/openvms/undocumented.php?page=13

Questions connexes