Ano ang QSH o Qshell at paano ito masulit sa IBM i?

Huling pag-update: 10/03/2026
May-akda: Isaac
  • Ang QSH o Qshell ay ang IBM i POSIX command interpreter na isinama sa PASE environment.
  • Pinapayagan nito ang pagsasama-sama ng mga utos na parang Unix sa CL upang i-automate ang mga gawain sa IFS.
  • Sinusuportahan nito ang mga script na may mga parameter ($0, $1, set, shift) na nagpapadali sa advanced automation.
  • Ito ay may kaugnayan sa mga kapaligirang Java at WebSphere, kung saan kritikal ang heap configuration.

Panimula sa QSH o Qshell

Kung gagamit ka ng IBM i (ang lumang AS/400) sa kalaunan ay makakaranas ka ng QSH o Qshell, ang interpreter ng utos na parang Unix na isinama sa sistema. Maraming tao ang nakakita nito nang paminsan-minsan, lalo na kapag nakikitungo sa mga gawain ng IFS o WebSphere, ngunit hindi laging malinaw kung ano talaga ito o kung gaano kalayo ang kaya nitong maabot.

Sa artikulong ito ay mahinahon nating babasagin ito Ano ang QSH/Qshell, para saan ito ginagamit sa IBM i, at paano ito makakatulong sa iyo? Saklaw nito ang parehong automation ng gawain (halimbawa, paglilista ng mga file mula sa IFS at pagkopya ng mga ito sa isang pisikal na archive) at mas kumplikadong mga senaryo na kinasasangkutan ng Java, WebSphere, o maging ang iSeries Access para sa Web. Gagamit tayo ng madaling maunawaang wika, iiwasan ang mga hindi kinakailangang teoretikal na jargon, ngunit susuriin natin ang mga teknikal na detalye upang matiyak na tunay itong kapaki-pakinabang para sa iyo.

Ano ang QSH o Qshell sa IBM i?

Kapag pinag-uusapan natin ang QSH o Qshell, tinutukoy natin ang POSIX-type shell interpreter na kasama ng IBM sa IBM iIto, sa madaling salita, ay isang "Unix-style shell" na naninirahan sa loob ng sistema at nagbibigay-daan sa iyong magpatakbo ng mga utos na halos kapareho ng mga gagamitin mo sa Linux (tulad ng ls, cd, atbp.) sa kapaligirang IBM i.

Ang kapaligirang ito ay bahagi ng tinatawag ng IBM na i5/OS PASE (Portable Application Solutions Environment)Ang PASE ay isang layer na nagbibigay ng mga utility at programang tugma sa mga pamantayan ng POSIX at X/Open. Dahil sa PASE, ang Qshell ay maaaring mag-alok ng medyo malawak na hanay ng mga tool na gumagana nang halos kapareho ng makikita mo sa isang klasikong sistema ng Unix.

Sa pagsasagawa, ang Qshell ay gumaganap bilang tulay sa pagitan ng tradisyonal na mundo ng IBM i (mga aklatan, mga pisikal na archive, CL) at ang mas "moderno" o bukas na mundo ng mga direktoryo, mga path ng IFS, at mga utos na istilong Unix. Nagbubukas ito ng pinto sa mga napaka-flexible na solusyon, lalo na kapag hinaluan mo ng mga utos ng shell ang mga programang CL o RPG.

Mahalagang maunawaan na ang Qshell ay hindi isang laruan o isang kuryusidad: Ito ay lubos na nakakapag-integrate sa IBM i at umaasa sa mga API ng system.Sa katunayan, maraming IBM io utilities at mga kaugnay na produkto (tulad ng WebSphere o Java tools) ang tumatakbo sa PASE, na sinasamantala ang parehong ecosystem na iyon.

QSH sa loob ng kapaligirang i5/OS PASS

Ang kapaligirang PASE ay responsable para sa paghahatid sa IBM i mga programang sumusunod sa mga pamantayan ng POSIX at X/OpenAng Qshell, bilang isang POSIX interpreter, ay bahagi ng set na ito at nakikinabang mula sa lahat ng mga library at tool na iniaalok ng PASE.

Kapag sinimulan mo ang Qshell, inilulunsad mo ang isang interpreter na nagpapatupad ng mga utos at programa. na parang nasa isang maliit na sistemang Unix ka sa loob ng isang IBM iKabilang dito ang mga pangunahing bagay tulad ng pagtatrabaho sa mga IFS path gamit ang "/directory/subdirectory", gamit ang mga pipe, redirect, at mga simpleng script.

Ang IBM ay nagpapanatili ng medyo komprehensibong dokumentasyon sa Qshell at PASE sa Sentro ng Kaalaman ng IBMKung gusto mong makita ang lahat ng posibilidad, opsyon sa command, at mga partikularidad ayon sa bersyon ng system (halimbawa, V6.1), mainam na sumangguni sa manwal para sa eksaktong bersyon ng IBM i na iyong na-install.

Bukod pa rito, sakop din ng environment na ito ang lahat ng bagay na may kaugnayan sa Java, mga application server tulad ng WebSphere, at mga kaugnay na utility. Kadalasan, kapag nakakita ka ng mga mensahe ng error o mga babala na may kaugnayan sa QSH0006 o QSH0007Sa esensya, may mga nangyayari sa PASE o Java na nakakaapekto sa paggana ng shell o sa mga prosesong inilulunsad nito.

Praktikal na halimbawa: paglilista ng mga IFS file gamit ang QSH at CL

Isa sa mga pinaka-praktikal (at karaniwang) gamit ng Qshell sa mga totoong kapaligiran ng IBM i ay ang makipagtulungan sa IFS upang ilista ang mga file at itapon ang impormasyong iyon sa isang pisikal na file na maaari nating iproseso mula sa CL, RPG o iba pang mga programa.

Isipin na mayroon kang isang IFS folder, halimbawa /FTPkung saan idinedeposito ang mga file na may extension na ito. .cbsGusto mong makuha, sa isang pisikal na file ng library, ang kumpletong listahan ng lahat ng mga file na iyon, kabilang ang mga nasa mga subdirectory, upang maproseso mo ang mga ito nang isa-isa.

Isang napakasimpleng paraan para gawin ito ay sa pamamagitan ng pagsasama-sama ng ilang CL statements gamit ang isang Qshell command na gumagamit ng command na ls -R upang ilista nang rekursibo. Ang ideya ay:

  Ayusin: Ang Skype ay hindi nagbubukas o tumutugon sa Residence Home windows 10

1. Gumawa ng pisikal na file kung saan mo ise-save ang resulta:

CRTPF FILE(LIBRIUM/ARCHIVE) RCDLEN(1024)

Ito ay bumubuo ng isang PF na may sapat na malaking rehistro (halimbawa, 1024 bytes ang haba) kung saan ang bawat linyang ibinalik ng utos ay itatago ls na naglulunsad ng Qshell. Kung umiiral na ang file, maaari mong hawakan ang error gamit ang isang MONMSG para hindi masira ang proseso.

Pagkatapos ay maaari mong idagdag:

MONMSG MSGID(CPF0000)

Kaya, kung ang paglikha ng file ay nabigo sa anumang kadahilananNakukuha mo ang pangkalahatang mensahe at maaari kang magpasya kung ano ang gagawin (bagaman sa pangunahing halimbawa ang problema ay binabalewala lamang).

Ang susunod na hakbang ay ang pagtatalaga ng utos na gusto mong isagawa sa Qshell sa isang CL variable. Ganito ang hitsura:

2. Ihanda ang utos ng shell na gusto mong patakbuhin, halimbawa:

CHGVAR VAR(&CMD) VALUE('ls -R /FTP/*.cbs > /qsys.lib/libreria.lib/archivo.file/archivo.mbr')

Dito nagiging interesante: sinasabi mong patakbuhin ito ls -R sa ruta /FTP upang ilista ang lahat ng mga file na tumutugma sa pattern *.cbsat ire-redirect mo rin ang karaniwang output sa miyembro ARCHIVE mula sa pisikal na file Tindahan ng Libro/Arkibo gamit ang sintaks ng IFS /qsys.lib/…Kaya, ang Qshell ang bahala sa paggawa ng listahan at direktang pagpapadala nito sa PF.

Kapag natukoy na ang utos, ang natitira na lang ay patakbuhin ito sa loob ng Qshell:

3. Patakbuhin ang utos sa Qshell na may:

STRQSH CMD(&CMD)

Ang utos STRQSH Magsimula ng sesyon ng Qshell at isagawa ang mga nilalaman ng variable &CMDMula sa pananaw ng gumagamit ng CL, ito ay isang medyo maginhawang paraan upang "buksan" ang mundo ng POSIX nang ilang sandali, tapusin ang trabaho, at pagkatapos ay bumalik sa CL.

Panghuli, maaari mong hawakan ang mga potensyal na error na itinatapon ng Qshell gamit ang isang bagay tulad ng:

MONMSG MSGID(CPF0000 QSH0006 QSH0007) EXEC(DO)
(PAGHAHANDA NG ERROR)
ENDDO

Sa ganitong paraan, kung may mangyari na pangkalahatang problema sa sistema (CPF0000) o isa sa mga tipikal na error sa Qshell (QSH0006, QSH0007), maglalagay ka ng error handling block kung saan maaari mong, halimbawa, i-log ang failure, magpadala ng mensahe sa operator, o gumawa ng mga desisyon batay sa ibinalik na code.

Kung magiging maayos ang lahat, ang Qshell interpreter ay mag-iiwan ng pisikal na file Tindahan ng Libro/Arkibo ang kumpletong listahan ng mga file .cbs Ang listahan ng mga natuklasan ay maaaring iproseso mula sa ibang programang CL o RPG. Ipinapakita ng pamamaraang ito gaano kalakas ang pagsasama ng tradisyonal na CL sa mga utos ng Qshell para sa mga partikular na gawain na kung hindi man ay magiging mas mahirap.

Mga posibilidad at kapangyarihan ng Qshell na lampas sa halimbawa

Ang nakaraang halimbawa ay nagpapakita lamang ng simula: Tumatanggap ang Qshell ng maraming parameter at command, parehong katutubo at minana mula sa mundo ng Unix. Sa kaso ng lsMaaari kang maglaro gamit ang mga opsyon tulad ng -R para sa recursion, paglilista ng mga format, mga filter, atbp. Pero iyon lang ang pinakanakikitang bahagi.

Sa pangkalahatan, pinapayagan ka ng Qshell na bumuo magaan at tiyak na mga solusyon sa pang-araw-araw na problema: maglipat ng mga file sa IFS, bumuo ng mga listahan, pagdugtungin ang mga output gamit ang mga pipe, i-automate ang maliliit na gawain sa pagpapanatili, o magsilbing isang intermediate layer sa pagitan ng mga batch process at mga panlabas na application.

Isang malaking bentahe ay ang Maaari mong gamitin ang Qshell mula sa CL (gamit ang STRQSH)Paghaluin ito sa mga utos ng system at panatilihin ang pangunahing lohika sa mga programa ng IBM i, habang itinatalaga sa shell ang mga operasyong istilong Unix na mas komportableng i-type doon.

Kung kailangan mong suriin nang mas malalim ang lahat ng magagamit na opsyon, nag-aalok ang IBM ng mga partikular na dokumentasyon para sa bawat bersyon ng system. Sentro ng Kaalaman ng IBM Halimbawa, sa bersyon 6.1, makikita mo ang mga detalye ng bawat utos, mga parameter nito, mga halimbawa ng paggamit, at mga tala ng compatibility. Sa isip, dapat mong konsultahin ang sangguniang ito upang matuklasan ang mga bagong utility na maaaring na-install mo na ngunit hindi mo ginagamit.

Dapat tandaan na ang Qshell ay hindi lamang ang opsyon sa kapaligirang parang Unix sa IBM i (nariyan din ang kapaligirang QP2TERM at ang pinaka-"purong" suporta sa PASE), ngunit isa ito sa mga pinaka-naa-access para sa mga administrador at developer na nagmumula sa mundo ng CL o RPG na gustong simulan ang paggamit ng mga tool ng IFS at POSIX nang walang masyadong komplikasyon.

Pagsulat ng mga script at parameter sa Qshell

Bukod sa pag-isyu ng mga indibidwal na utos, gamit ang Qshell maaari mo ring sumulat ng sarili mong mga iskrip Ang mga script na ito ay gumagana nang katulad ng sa isang klasikong shell. Maaari silang tumanggap ng mga parameter, gumamit ng mga variable, at dynamic na bumuo ng mga command, na nagbibigay-daan sa iyong i-automate ang mga paulit-ulit na gawain nang hindi muling isinusulat ang code sa bawat pagkakataon.

Sa isang Qshell script, ang mga argumentong natatanggap nito ay itinatalaga sa mga espesyal na variable: $1 para sa unang parametro, $2 para sa pangalawa, at iba pa hanggang sa pinakamataas na 255 mga parameterSa madaling salita, kapag nagpatakbo ka ng script na nagpapasa ng ilang mga halaga, maaari mo itong gamitin sa loob mismo ng script upang bumuo ng mga path, pangalan ng file, o anumang bagay na kailangan mo.

  4 Pinakamahusay na Programa upang I-highlight ang Mga Dokumentong PDF

Halimbawa, maaari kang magkaroon ng script na tumatanggap ng pangalan ng isang command na isasagawa bilang unang parameter nito at ipinapakita ito bago patakbuhin ang command. Isang bagay na kasing simple ng:

echo $ 1
Isinasagawa ng $1 # ang utos na nakapaloob sa unang parameter

Ang maliit na halimbawang ito ay nagpapakita kung paano Ang isang script ay maaaring magsilbing "wrapper" para sa iba pang mga utos, pagdaragdag ng karagdagang lohika (hal., mga pagpapatunay o mga bakas) bago isagawa ang aktwal na utos.

Para magtalaga ng mga halaga sa mga parameter sa loob ng script, maaari mong gamitin ang command itakda. Halimbawa:

itakda ang v1 v2 # italaga ang v1 sa $1 at ang v2 sa $2

Sa ganitong paraan, nang hindi na kailangang tawagin muli ang script mula sa labas, maaari mong muling ayusin ang mga halagang hahawakan mo sa loob. Ito ay kapaki-pakinabang kapag gusto mo, halimbawa, muling tukuyin ang pagkakasunud-sunod ng mga argumento o maghanda ng mga default na halaga.

Isa pang kawili-wiling utos ay ilipat, na naglilipat ng mga parameter pakaliwa: Nawawala ang $1, nagiging $1 ang $2, nagiging $2 ang $3at iba pa. Ito ay isang klasikong pamamaraan ng scripting para sa pag-ulit-ulit sa mga listahan ng mga argumento nang paisa-isa, inaalis ang una sa bawat oras na iproseso mo ito.

Bukod pa rito, mayroon kang variable na $0na naglalaman ng pangalan mismo ng script. Nagbibigay-daan ito sa iyo, halimbawa, na magpakita ng mga mensahe ng tulong na kinabibilangan ng aktwal na pangalan ng script nang hindi kinakailangang manu-manong i-type ito, o iakma ang gawi depende sa kung paano ito ginamit.

Kung pagsasama-samahin, ang mga posibilidad na ito ang dahilan kung bakit ang Qshell ay isang Isang napaka-flexible na tool para sa pag-assemble ng maliliit na automation system na gumagana sa IFS, tumatawag sa mga utos ng sistema, o nagsasama ng mga proseso ng IBM i sa mga panlabas na aplikasyon.

Ang kaugnayan ng Qshell sa WebSphere, Java, at paggamit ng memorya

Bagama't ang Qshell ay kadalasang nakikita lamang bilang isang command interpreter para sa IFS, sa pang-araw-araw na realidad sa IBM i ay tila malapit din itong nauugnay sa Mga Java environment at application server tulad ng WebSphereLalo itong kapansin-pansin kapag nagsisimulang lumitaw ang mga mensahe ng system na may kaugnayan sa Java memory o paggamit ng heap.

Sa mga kapaligiran kung saan ito ginagamit Pag-access sa iSeries para sa Web (IWA)Kapag naka-deploy sa WebSphere (halimbawa, WAS 6.1), karaniwan nang makatagpo ng mga mensahe tulad ng:

GINAMIT NG JAVA ANG 95% NG GC HEAP.
GAMIT NA SUKAT NG BUNTOT(KB) AT MAX HEAP(KB): 249049 262144.

Ang mga ganitong uri ng babala ay karaniwang nagmumula sa WebSphere server (hindi direkta mula sa Qshell), ngunit maaaring may kasamang mga mensahe ang mga ito na may kaugnayan sa PASE o mga prosesong inilunsad mula o papunta sa Qshell. Sa esensya, ang sinasabi sa iyo ng sistema ay Malapit nang maubos ng JVM ang heap memoryat ipinapayong isaayos ang configuration bago mag-crash ang server na may OutOfMemory error.

Ipinakilala ng IBM ang mga ganitong uri ng mensahe nang eksakto upang magkaroon ang administrator isang babala bago mag-crash ang application serverSamakatuwid, kapag natanggap mo ang mga paulit-ulit na babalang ito, malinaw na sintomas na dapat mong suriin ang maximum heap parameters na nakatalaga sa JVM kung saan tumatakbo ang IWA o ang nauugnay na portal.

Sa ilang mga totoong kaso, natukoy ng mga administrador na, kahit na tila walang naka-log in na user ang isang portal, may nabubuo pa ring data. 2 o 3 mensahe mula sa halos punong tambak kada arawKadalasan ito ay dahil sa mga internal na proseso ng aplikasyon, mga gawain sa background, o mga memory leak na nagpapanatili sa heap na ginagamit kahit na walang user load.

Bukod pa rito, may mga sitwasyon kung saan naging mahirap pa nga I-access ang administrative console sa pamamagitan ng web para baguhin ang mga parameter tulad ng minimum at maximum na laki ng JVM, dahil ang ilang portlet ay nabigo ("nag-crash") nang sinubukan mong buksan ang mga configuration screen.

Ang isang estratehiya na napatunayang kapaki-pakinabang ay kinabibilangan ng ganap na i-restart ang kapaligiran (server, WebSphere, portal, atbp.)Maghintay hanggang sa bumalik ang lahat sa isang matatag na estado, at pagkatapos ay mag-log in sa administrative console upang suriin ang configuration ng memorya. May mga pagkakataon kung saan ang mga minimum at maximum heap field ay lumalabas na blangko, umaasa sa mga default na halaga, na hindi laging angkop para sa mga kapaligiran na may malaking load.

Pagkatapos makakuha ng access, pinili ng ilang administrador na tukuyin, halimbawa, ang isang Minimum na laki ng heap na 512 MB at maximum na 1024 MB (bilang mga halaga lamang ng pagsubok) upang makita kung bumubuti ang kilos ng sistema at nababawasan ang mga mensahe ng babala. Gayunpaman, mahalagang iakma ang mga halagang ito sa magagamit na memorya sa IBM i mismo at ang uri ng load na sinusuportahan ng server.

  I-install ang Vavoo TV sa Kodi: Kumpletong gabay na may mga alternatibo at trick

Sa buong kontekstong ito, bagama't ang mga partikular na mensahe tungkol sa "GUMAGAMIT ANG JAVA NG 95% NG GC HEAP" ay Mga tampok ng WebSphereAng kapaligirang PASE at ang Qshell ay maaaring hindi direktang kasangkot, dahil maraming mga tool at script ang naglulunsad ng mga proseso ng Java o nakikipag-ugnayan sa mga serbisyong naka-deploy sa parehong server.

Mga setting ng WebSphere, IWA at mga bersyon sa IBM i V6R1

Kapag nakaranas ka ng mga isyu sa performance o memory sa mga kapaligirang tulad ng iSeries Access para sa Web (IWA) sa IBM i V6R1Mahalagang maging malinaw sa ilang punto tungkol sa mga bersyon at pagiging tugma sa WebSphere, dahil dito nagtatagpo ang Qshell, PASE, Java at ang configuration ng server.

Bilang panimula, maipapayo na suriin Anong eksaktong bersyon ng iSeries Access for Web ang na-install mo na?Karaniwan itong mapapatunayan sa pamamagitan ng pagkonsulta sa espesyal na pahina. /webaccess/iWAInfo na ipinapakita mismo ng application. Mula roon ay makikita mo ang kasalukuyang antas ng IWA.

Sa partikular na kaso ng IBM i V6.1, nagkaroon ng malaking pag-update na natukoy ng numero ng PTF SI44342na tumutugma sa pinakabagong bersyon na magagamit para sa release na iyon. Ang pagpapanatiling updated ng IWA sa antas na iyon (o sa kasalukuyang antas sa iyong kapaligiran) ay maaaring malutas ang maraming isyu sa stability o memory na naayos na sa paglipas ng panahon.

Sa kabilang banda, kapag pinag-uusapan ang "portal" sa kontekstong ito, mahalagang malaman kung ang tinutukoy mo ba ay eksakto sa IWA (Pag-access sa iSeries para sa Web) o a Portal ng WebSphere kumpleto. Bagama't maaaring magsabay ang dalawa sa IBM i, ang kanilang mga kinakailangan sa configuration at memory ay hindi pareho, at ang mga sintomas ng pagkabigo (mga portlet na hindi naglo-load, mga mensahe ng error, matinding pagbagal) ay maaaring nakalilito kung hindi ka malinaw kung aling produkto ang iyong kinakaharap.

Ang isang mahalagang aspeto ay kung anong uri ng server ang ginagamit para sa pag-deploy ng IWA: maaari itong maging isang WebSphere Application Server 6.1, 7.0, isang portal, o isang internal serverAng mga parameter ng JVM ay nag-iiba depende sa uri ng server, sa partikular na bersyon, at gayundin sa uri ng Java virtual machine na ginamit (halimbawa, ang klasikong "klasiko" o ang mas modernong J9).

Kapag palagi kang nakakakita ng mga mensaheng "halos puno na ang heap", bukod pa sa pagsuri sa mga parameter ng iyong memorya, mahalagang isaalang-alang kung may nawawala kang mahalagang tampok. Mga karagdagang PTF o kahit isang pag-update ng bersyon ng mismong portal o ng WebSphereSa IBM i V6R1, may limitasyon sa bersyon ng iWAS na maaari mong i-upgrade, kaya inirerekomendang suriin ang opisyal na dokumentasyon upang mahanap ang pinakabagong sinusuportahang kumbinasyon para sa iyong release.

Bilang ibuod sa bahaging ito: kung ang iyong IBM i V6R1 environment na may IWA 6.1 na naka-deploy sa WebSphere ay nagsimulang magkaroon ng mga isyu sa memorya, dapat kang magsagawa ng block review. konpigurasyon ng heap, antas ng IWA PTF, eksaktong bersyon ng WebSphere, at uri ng JVMSaka mo lang malalaman ang buong problema at magagawang ayusin ito nang naaayon nang hindi limitado sa paminsan-minsang pag-restart.

Ang lahat ng ito ay hindi direktang nauugnay sa Qshell sa diwa na, sa pamamagitan ng mga script at utos sa kapaligirang PASE, Maaari mong subaybayan ang mga proseso, maglunsad ng mga pantulong na gawain, o kahit na i-automate ang mga operasyon sa pagpapanatili na tumutulong na mapanatili ang server sa maayos na paggana, mula sa paglilinis ng mga file sa IFS hanggang sa pagbuo ng mga listahan ng log para sa pagsusuri.

Sa buong paglalakbay na ito, nakita natin kung paano isinasama ang Qshell sa IBM i bilang isang POSIX interpreter na nagpapalawak sa mga kakayahan ng sistemaPinapayagan ng QSH ang mga gawaing kasing simple ng paglilista ng mga IFS file at pagsulat ng output sa isang pisikal na file, at maaari pa ngang gumana bilang isang bahagi sa loob ng mga kumplikadong kapaligiran ng Java at WebSphere. Ang epektibong paggamit ng QSH ay nangangailangan ng matibay na pag-unawa sa papel nito sa loob ng PASE, pamilyar sa mga utos tulad ng `ls`, `set`, at `shift`, at ang kakayahang pagsamahin ito sa CL at mga klasikong tool ng IBM i. Sa pamamagitan ng pamamaraang ito, ang QSH ay nagiging isang malakas na kakampi para sa parehong mga administrador at developer na naghahangad na mapakinabangan ang mga kakayahan ng platform.