赞
踩
现在程序员行业挺抢手,Java, Python 等等程序语言各大公司都有很大的需求,当中有一个行业,其实比较容易忽略,就是银行的程序员。银行系统其实有各种程序员需要,无论 Java, Python, 还是 Cobol 都很需要人手的。可是刚毕业的宝宝们大多选 Java,Python 这些,Cobol 却没啥人问津,加上刚毕业学生其实也不知道如何学 Cobol。
开始之前先简单比较一下:主机程序员 跟 Java 程序员
主机程序员 | Java 程序員 | |
---|---|---|
流行程度 | 非常不流行 | 非常流行 |
行业 | 银行,大型保险公司,政府 | 各种公司都需要 |
工资 | 100+30% | 100% |
竞争 | 没啥人会,抢的人不多 | 大多人都会,很多人跟你抢 |
技术 | 基本 Cobol,JCL,DB2 | 除了基本Java,要求使用多种框架技术 e.g. Spring, MyBatis, Hibernate, Database |
前景 | 10-20年,只要系统没更换,平常比较稳定 | 比较长远 |
今天老程序员在这里分享一下,如何自己搭建一个学习主机开发的环境。
安装 z/OS 其实有很多选择
可以安装在虚拟器,也可以装在实体机器上
可以在 Windows 上安装,也可以在 Linux 上安装
z/OS 是操作系统,有不同版本,MVS -> OS380 -> OS390 -> z/OS
MVS 是开源可以免费取得的,一般公司使用的是 IBM z/OS 最新版本 z/OS V2R4
普通学习机用 z/OS V1R10 也足够
(如果是学习资金非常充足的,可以到 IBM 官网申请 zPDT 个人版学习系统,也是 Linux)
这里示范的是用实体机器 Ubuntu 系统,自行编译 hercules,再跑 z/OS V1R10
实体机器: Xeon E3 1240 V2 老 CPU + 32GB RAM + 120GB SSD + Ubuntu 20.04 LTS
实体机器 IP: 192.168.50.15
- kazuya@ubuntu: ~
- $ uname -a
- Linux ubuntu 5.4.0-81-generic #91-Ubuntu SMP Thu Jul 15 19:09:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
- kazuya@ubuntu: ~
- $ ifconfig
- eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
- inet 192.168.50.15 netmask 255.255.255.0 broadcast 192.168.50.255
- inet6 fe80::76d0:2bff:fe28:c17f prefixlen 64 scopeid 0x20<link>
- ether ***************** txqueuelen 1000 (Ethernet)
- RX packets 310 bytes 39339 (39.3 KB)
- RX errors 0 dropped 59 overruns 0 frame 0
- TX packets 203 bytes 26107 (26.1 KB)
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- device interrupt 20 memory 0xf7400000-f7420000
-
- lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
- inet 127.0.0.1 netmask 255.0.0.0
- inet6 ::1 prefixlen 128 scopeid 0x10<host>
- loop txqueuelen 1000 (Local Loopback)
- RX packets 27 bytes 3059 (3.0 KB)
- RX errors 0 dropped 0 overruns 0 frame 0
- TX packets 27 bytes 3059 (3.0 KB)
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
另外,还要自己定2个 IP 用来给 Ubuntu 和 z/OS 之间内部联系,可以随便选,按 Hercules 官网教学,定为
192.168.200.1 (这个给 z/OS 用)
192.168.200.2 (这个给 Ubuntu 用)
Ubuntu 要连去 z/OS,连 192.168.200.1 就可以
例如: 在 Ubuntu 里要连去 z/OS ftp
- kazuya@ubuntu: ~
- $ ftp 192.168.200.1
虽然 192.168.200.1/2 是内部联系,如果有另外一个机器,例如,另一台实体机器 Mac (IP 192.168.50.11),要连到 Ubuntu 内的 z/OS,也可以容易配置
下一步就是取得所需的 z/OS,这个自己发灰,下面是 z/OS V1R10 v1.10 版本
包括了 DB2, WAS, IMS, Java 等等,可以挺全面的学习
网上大多数是带副档名 e.g. .CCKD 有没有都是一样
这些劵,下了在 Linux 或 Windows 都是通用的
最底下的 hercules.cnf 是 Hercules 的配置档,是灵魂
而 UAPP01, USRG01, UTMP01 是自己建立的劵, 用来在 z/OS 放自己的东西
UAPP01 一会用来放 HFS 新版的 Java SDK J8.0
USRG01 放自己写的 Program, Script 等等
UTMP01 用来放暂存,例如解压档暂存
SYSCPK 是額外的編譯工具劵,例如學習 RPG 等等
可以用 hercules 自带的工具 dasdinit 来建立新的劵
例如:建立 USRG01 3390 是劵的格式带不同格式,3390 大概可以装 900MB 东西
dasdinit -a /home/kazuya/zos/USRG01 3390 USRG01
zzsacard.bin 是一个还原小工具,Hercules 里自带的,hercules.cnf 里面要配置,所以,复制出来,.cnf 统一指向本地目录
- kazuya@ubuntu: ~/zos
- $ pwd
- /home/kazuya/zos
- kazuya@ubuntu: ~/zos
- $ ls -l | grep kazuya
- -rwxrwxrwx 1 kazuya kazuya 529743872 Aug 22 22:08 SARES1
- -rwxrwxrwx 1 kazuya kazuya 30970765 Aug 22 22:08 SYSCPK
- -rwxrwxrwx 1 kazuya kazuya 226248596 Aug 22 22:08 ZACIC1
- -rwxrwxrwx 1 kazuya kazuya 170905505 Aug 22 22:08 ZADB81
- -rwxrwxrwx 1 kazuya kazuya 308625683 Aug 22 22:08 ZADB82
- -rwxrwxrwx 1 kazuya kazuya 1111670784 Aug 22 22:08 ZADB83
- -rwxrwxrwx 1 kazuya kazuya 1107853312 Aug 22 22:08 ZADB84
- -rwxrwxrwx 1 kazuya kazuya 201001999 Aug 22 22:08 ZADB91
- -rwxrwxrwx 1 kazuya kazuya 835317373 Aug 22 22:08 ZADB92
- -rwxrwxrwx 1 kazuya kazuya 565875480 Aug 22 22:08 ZADIS1
- -rwxrwxrwx 1 kazuya kazuya 459112448 Aug 22 22:08 ZADIS2
- -rwxrwxrwx 1 kazuya kazuya 288735232 Aug 22 22:08 ZADIS3
- -rwxrwxrwx 1 kazuya kazuya 801079296 Aug 22 22:08 ZADIS4
- -rwxrwxrwx 1 kazuya kazuya 690978816 Aug 22 22:08 ZADIS5
- -rwxrwxrwx 1 kazuya kazuya 933675008 Aug 22 22:08 ZADIS6
- -rwxrwxrwx 1 kazuya kazuya 242821373 Aug 22 22:08 ZAIMS1
- -rwxrwxrwx 1 kazuya kazuya 878364452 Aug 22 22:08 ZAPRD1
- -rwxrwxrwx 1 kazuya kazuya 716280541 Aug 22 22:08 ZAPRD2
- -rwxrwxrwx 1 kazuya kazuya 968475738 Aug 22 22:08 ZAPRD3
- -rwxrwxrwx 1 kazuya kazuya 34307 Aug 22 22:08 ZAPRD4
- -rwxrwxrwx 1 kazuya kazuya 564331245 Aug 22 22:08 ZARES1
- -rwxrwxrwx 1 kazuya kazuya 403303341 Aug 22 22:08 ZARES2
- -rwxrwxrwx 1 kazuya kazuya 94654623 Aug 22 22:08 ZASYS1
- -rwxrwxrwx 1 kazuya kazuya 682986497 Aug 22 22:08 ZAUSS1
- -rwxrwxrwx 1 kazuya kazuya 1296174118 Aug 22 22:08 ZAWAS1
- -rwxrwxrwx 1 kazuya kazuya 1520287744 Aug 22 22:08 ZAWAS2
- -rwxrwxrwx 1 kazuya kazuya 1691123712 Aug 22 22:08 ZAWAS3
-
- -rwxrwxr-x 1 kazuya kazuya 2997 Aug 22 09:37 hercules.cnf
- -rw-rw-r-- 1 kazuya kazuya 29520 Aug 21 21:47 zzsacard.bin
- -rwxrwxrwx 1 kazuya kazuya 949663232 Aug 22 22:02 UAPP01
- -rwxrwxrwx 1 kazuya kazuya 949663232 Aug 22 10:13 USRG01
- -rwxrwxrwx 1 kazuya kazuya 949663232 Aug 22 22:02 UTMP01
-
Hercules 是一个模拟器,装了可以跑不同的 z/OS 操作系统,就像在 Windows 上要跑 Linux,可以装 VMWare Player, Virtual Box 或自带的 Windows Hyper-V。
目前 Hercules 带2个版本,官网的 Hercules 已经没更新了,不过还是可用的,最新是 3.13。
http://www.hercules-390.eu
建议使用由 SDL 维护的版本,名字叫 hyperion,SDL 全名叫 Software Development Laboratories 是一个叫 David 的人维护,SDL 也开发 GUI 版本 Windows 程序和 CTCI-Win (用来在 Windows 上主客联网的工具),SDL 的工具是收费的,但可以试用,而且是不限时,不限功能。
https://github.com/SDL-Hercules-390/hyperion
首先,git clone 把 hyperion 下载回来
- kazuya@ubuntu: ~/tmp
- $ pwd
- /home/kazuya/tmp
- kazuya@ubuntu: ~/tmp
- $ git clone https://github.com/SDL-Hercules-390/hyperion.git
然后给 ubuntu apt update upgrade 和安装基本编译工具
- sudo apt update
- sudo apt upgrade
- sudo apt install m4 make autoconf automake cmake flex build-essential regina-rexx libbz2-dev libregina3-dev zlib1g-dev unzip c3270 ncat libltdl-dev
然后切换到 hyperion 目录,先跑 bldlvlck 来检查一下系统编译需求是否满足,然后,再 make,-j8 可以根据实际机器 CPU core 核心数来设,这样编译快一点,例如 Xeon E3 1240 V2 是4核,支援超线程,所以,4x2,设为 8
- cd /home/tmp/hyperion
- ./util/bldlvlck
- ./configure
- make clean
- make -j8
-
- sudo make install
编译好了,建议 make install 把 hercules 安装到用户程序目录,像下面
这样运行 hercules 也不用输完整路径 /home/tmp/hyperion/hercules,直接 hercules 就可以
- kazuya@ubuntu: /usr/local/bin
- $ ls -ltr
- total 24216
- -rwxr-xr-x 1 root root 15347 Aug 21 21:32 voldsext.cmd
- -rwxr-xr-x 1 root root 1376 Aug 21 21:32 dasdlist
- -rwxr-xr-x 1 root root 627576 Aug 21 21:32 cckdcdsk
- -rwxr-xr-x 1 root root 627128 Aug 21 21:32 cckdcomp
- -rwxr-xr-x 1 root root 663696 Aug 21 21:32 cckddiag
- -rwxr-xr-x 1 root root 627320 Aug 21 21:32 cckdswap
- -rwxr-xr-x 1 root root 627608 Aug 21 21:32 cckdcdsk64
- -rwxr-xr-x 1 root root 627160 Aug 21 21:32 cckdcomp64
- -rwxr-xr-x 1 root root 664376 Aug 21 21:32 cckddiag64
- -rwxr-xr-x 1 root root 627344 Aug 21 21:32 cckdswap64
- -rwxr-xr-x 1 root root 658768 Aug 21 21:32 convto64
- -rwxr-xr-x 1 root root 654704 Aug 21 21:32 cckdmap
- -rwxr-xr-x 1 root root 650872 Aug 21 21:32 dasdcat
- -rwxr-xr-x 1 root root 679056 Aug 21 21:32 dasdconv
- -rwxr-xr-x 1 root root 675272 Aug 21 21:32 dasdcopy
- -rwxr-xr-x 1 root root 630056 Aug 21 21:32 dasdinit
- -rwxr-xr-x 1 root root 678472 Aug 21 21:32 dasdconv64
- -rwxr-xr-x 1 root root 678352 Aug 21 21:32 dasdcopy64
- -rwxr-xr-x 1 root root 630072 Aug 21 21:32 dasdinit64
- -rwxr-xr-x 1 root root 642944 Aug 21 21:32 dasdisup
- -rwxr-xr-x 1 root root 914056 Aug 21 21:32 dasdload
- -rwxr-xr-x 1 root root 914064 Aug 21 21:32 dasdload64
- -rwxr-xr-x 1 root root 669040 Aug 21 21:32 dasdls
- -rwxr-xr-x 1 root root 637504 Aug 21 21:32 dasdpdsu
- -rwxr-xr-x 1 root root 699008 Aug 21 21:32 dasdseq
- -rwxr-xr-x 1 root root 625656 Aug 21 21:32 dasdser
- -rwxr-xr-x 1 root root 621088 Aug 21 21:32 dmap2hrc
- -rwxr-xr-x 1 root root 627176 Aug 21 21:32 hercules
- -rwxr-xr-x 1 root root 647480 Aug 21 21:32 hetget
- -rwxr-xr-x 1 root root 627640 Aug 21 21:32 hetinit
- -rwxr-xr-x 1 root root 675928 Aug 21 21:32 hetmap
- -rwxr-xr-x 1 root root 654136 Aug 21 21:32 hetupd
- -rwxr-xr-x 1 root root 672040 Aug 21 21:32 maketape
- -rwxr-xr-x 1 root root 712560 Aug 21 21:32 tapecopy
- -rwxr-xr-x 1 root root 637256 Aug 21 21:32 tapemap
- -rwxr-xr-x 1 root root 639744 Aug 21 21:32 tapesplt
- -rwxr-xr-x 1 root root 805480 Aug 21 21:32 vmfplc2
- -rwxr-xr-x 1 root root 622440 Aug 21 21:32 hercifc
- -rwxr-xr-x 1 root root 624112 Aug 21 21:32 herclin
- lrwxrwxrwx 1 root root 10 Aug 21 21:32 fba2cfba -> ./dasdcopy
- lrwxrwxrwx 1 root root 10 Aug 21 21:32 ckd2cckd -> ./dasdcopy
- lrwxrwxrwx 1 root root 10 Aug 21 21:32 cfba2fba -> ./dasdcopy
- lrwxrwxrwx 1 root root 10 Aug 21 21:32 cckd2ckd -> ./dasdcopy
- lrwxrwxrwx 1 root root 12 Aug 21 21:32 fba2cfba64 -> ./dasdcopy64
- lrwxrwxrwx 1 root root 12 Aug 21 21:32 ckd2cckd64 -> ./dasdcopy64
- lrwxrwxrwx 1 root root 12 Aug 21 21:32 cfba642fba -> ./dasdcopy64
- lrwxrwxrwx 1 root root 12 Aug 21 21:32 cckd642ckd -> ./dasdcopy64
- kazuya@ubuntu: /usr/local/bin
- $
然后,修改一下 vi ~/.profile,把 /usr/loca/lib/hercules library 路径加上 LD_LIBRARY_PATH
这样运行 hercules,才可找到所需的 library
- # ~/.profile: executed by the command interpreter for login shells.
- # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
- # exists.
- # see /usr/share/doc/bash/examples/startup-files for examples.
- # the files are located in the bash-doc package.
-
- # the default umask is set in /etc/profile; for setting the umask
- # for ssh logins, install and configure the libpam-umask package.
- #umask 022
-
- # if running bash
- if [ -n "$BASH_VERSION" ]; then
- # include .bashrc if it exists
- if [ -f "$HOME/.bashrc" ]; then
- . "$HOME/.bashrc"
- fi
- fi
-
- # set PATH so it includes user's private bin if it exists
- if [ -d "$HOME/bin" ] ; then
- PATH="$HOME/bin:$PATH"
- fi
-
- # set PATH so it includes user's private bin if it exists
- if [ -d "$HOME/.local/bin" ] ; then
- PATH="$HOME/.local/bin:$PATH"
- fi
-
- export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/local/lib/hercules
- #setleds -D +num
- ~
-
- ~
- ~
- ~
- ".profile" 30L, 901C
sudo ldconfig
z/OS 配置挺简单就是修改 hercules.cnf,下面以超线程8核为例子,/home/kazua/zos 改为自己机器的路径
- #
- # Hercules Emulator Control file...
- #
- # Description:
- # MaxShutdownSecs: 15
- # LoadUnit: 0A80
- # RCFile:
- # LogoFile:
- # IgnoreParseErrors: 0
- # HercGUI Version: 1.17.0.5541
- #
-
- # System parameters
-
- ARCHLVL z/Arch
-
- MAXCPU 8
- ENGINES CP,CP,CP,CP,CP,CP,CP,CP
- NUMCPU 8
-
- AUTO_SCSI_MOUNT NO
- CNSLPORT 3270
- CONKPALV (3,1,10)
- CODEPAGE default
- CPUMODEL 3090
- CPUSERIAL 012345
- CPUVERID FD
- DEVTMAX 8
- DIAG8CMD ENABLE NOECHO
- ECPSVM YES TRAP
- HTTP PORT 80 NOAUTH
- MODPATH /usr/local/lib/hercules
- LEGACYSENSEID DISABLE
- NETDEV /dev/net/tun
- LOADPARM 0A95DCM1
- #LOADPARM 0A82CS
- LPARNUM 01
- LPARNAME HERCULES
- MAINSIZE 8192
- MANUFACTURER HRC
- MODEL EMULATOR "" "" ""
- MOUNTED_TAPE_REINIT DISALLOW
- OSTAILOR Z/OS
- PANOPT FULLPATH
- PANOPT RATE=500
- PANOPT TITLE=z/OS
- PGMPRDOS LICENSED
- PLANT ZZ
- SHCMDOPT DISABLE NODIAG8
- SYSEPOCH 1900
- TIMERINT 50
- TRACEOPT TRADITIONAL
- TZOFFSET +0800
- XPNDSIZE 0
- YROFFSET 0
-
- # Card Readers
-
- 000C 3505 /home/kazuya/zos/zzsacard.bin
-
- # Card Punches
-
- 000D 3525 /home/kazuya/zos/punch00d.txt ascii
-
- # Line Printers
-
- 000E 1403 /home/kazuya/zos/print00e.txt crlf
-
- # Console Printers
-
- 0009 3215-C / noprompt
-
- # Display Terminals
-
- 0700.5 3270
-
- # Disk Drives
-
- 0A80 3390 /home/kazuya/zos/ZARES1
- 0A81 3390 /home/kazuya/zos/ZARES2
- 0A82 3390 /home/kazuya/zos/SARES1
- 0A83 3390 /home/kazuya/zos/ZADB81
- 0A84 3390 /home/kazuya/zos/ZADB82
- 0A85 3390 /home/kazuya/zos/ZADB83
- 0A86 3390 /home/kazuya/zos/ZADB84
- 0A87 3390 /home/kazuya/zos/ZADB91
- 0A88 3390 /home/kazuya/zos/ZADB92
- 0A89 3390 /home/kazuya/zos/ZACIC1
- 0A8A 3390 /home/kazuya/zos/ZADIS1
- 0A8B 3390 /home/kazuya/zos/ZADIS2
- 0A8C 3390 /home/kazuya/zos/ZADIS3
- 0A8D 3390 /home/kazuya/zos/ZADIS4
- 0A8E 3390 /home/kazuya/zos/ZADIS5
- 0A8F 3390 /home/kazuya/zos/ZADIS6
- 0A90 3390 /home/kazuya/zos/ZAIMS1
- 0A91 3390 /home/kazuya/zos/ZAPRD1
- 0A92 3390 /home/kazuya/zos/ZAPRD2
- 0A93 3390 /home/kazuya/zos/ZAPRD3
- 0A94 3390 /home/kazuya/zos/ZAPRD4
- 0A95 3390 /home/kazuya/zos/ZASYS1
- 0A96 3390 /home/kazuya/zos/ZAUSS1
- 0A97 3390 /home/kazuya/zos/ZAWAS1
- 0A98 3390 /home/kazuya/zos/ZAWAS2
- 0A99 3390 /home/kazuya/zos/ZAWAS3
- 0A9A 3390 /home/kazuya/zos/USRG01
- 0A9B 3390 /home/kazuya/zos/SYSCPK
- 0A9C 3390 /home/kazuya/zos/UAPP01
- 0A9D 3390 /home/kazuya/zos/UTMP01
-
- # Communication Devices
-
-
- 0E20.2 CTCI 192.168.200.1 192.168.200.2
-
z/OS 开机可以选择要起动的不同程序,在 LOADPARM 设置,下面 0A95DCM1,是指到 0A95,DCM1,冷起动包括 DB2, CICS, WAS,就是大部分学习要用到的东西,0A82CS 是最基本的起动,不起动 DB2, CICS, WAS 这些,LOADPARM 还有好多其他选择
- LOADPARM 0A95DCM1
- #LOADPARM 0A82CS
-
- 0A95 3390 /home/kazuya/zos/ZASYS1
主机起动叫 IPL initial program load,就是开始程序加载,就是开机
起动主要分2种 COLD START 和 WARM START,我比较喜用冷起动 COLD START,就是每次起动都初始化例如 log 等等
在现实环境,大多数不会 COLD START,WARM START 起动比较快多了
起飞!!
hercules 要建立层网络管导,要用 sudo 来起动,在 Windows 也是要用 Administrator 来起的,不然 CTCI-WIN 起不了
- kazuya@ubuntu: ~
- $ sudo hercules -f /home/kazuya/zos/hercules.cnf
在真正 IPL 前,先在 ubuntu 再开一个 tty session 用 c3270 连上去,用来作 主控制台
- kazuya@ubuntu: ~
- $ c3270 localhost 3270
然后输入 IPL A80
A80 是指到 0A80 ZRES01
第一次起动会提示初启化 在 主控制台 输入 R 00,I
R 是 REPLY 回复提示码 00,回复值 I
- IXC404I SYSTEM(S) ACTIVE OR IPLING: P390
- IXC420D REPLY I TO INITIALIZE SYSPLEX ADCDPL, OR R TO REINITIALIZE XCF
-
- R 00,I
等一会起动就完成了
然后,ubuntu 再多开一个 tty session
- kazuya@ubuntu: ~
- $ c3270 localhost 3270
这里我们可以登陆 TSO 或 CICS
TSO 是 Time Sharing Option 就是一台机分享很多用使用,主机程序员就是用这个界面连到主机做日常开发,就像 Linux 用 ssh 或 putty 连一样
CICS 是 主机的 GUI 界面,用来接受用户输入输出,就像 网页 Browser 界面,或 C# GUI 程序
输入 l tso 然后按 Enter
输入 IBMUSER
系统自有一堆账号,平常用 IBMUSER 就可以
然后输入密码,预设 IBMUSER 或 SYS1
按 Enter
按 Enter 就可以去到 ISPF 互动界面,程序99%时间就是在这里编辑 Cobol 代码,操作主机等等
z/OS V1R10 网络配置修改 PROF1 配置档就可以
在 ISPF Command => =2 进入 Edit Entry Panel 编辑界面
然后输入 ADCD.Z110.TCPPARMS(PROF1)
ISPF 里可以用 F7 F8 往上下翻,在左边命令输入 i 可加行,d 可以删行
编辑完 在 Command => save 然后 F3 或 exit 可以退出
网络配置我们给 z/OS 定义个 CTCA 和 CTCI 设备
然后定义 z/OS 本机 IP HOME 192.168.200.1
网关指向 192.168.200.2 Ubuntu
然后,START CTCA 设备就可以
路由方面 在 ubuntu 加个 tun0 和 路由把去 192.168.200.1 z/OS 的包路由到 tun0
- sudo ufw default allow routed
- sudo ufw route allow in on tun0 out on wlo1
- sudo ufw route allow in on wlo1 out on tun0
- sudo sysctl -w net.ipv4.ip_forward=1
- sudo vi /etc/sysctl.conf
- net.ipv4.ip_forward=1
-
- **Remark: Network interface is wlo1 for wireless network
这样,网络就通了,可以 ftp,ssh,web 取存 z/OS
如果 ubuntu 开了 ufw 防火墙,要让下面通过
如果有第三台机器要存取 Ubuntu 内的 z/OS,例如上面说的 Mac (IP 192.168.50.11),防火墙也要让其通过
内网本机学习的新手,可以先关 ufw
- kazuya@ubuntu: ~
- $ netstat -in
- Kernel Interface table
- Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
- eno1 1500 24814 0 4003 0 14691 0 0 0 BMRU
- lo 65536 3542 0 0 0 3542 0 0 0 LRU
- tun0 1500 0 0 0 0 14 0 0 0 PRU
- kazuya@ubuntu: ~
- $ netstat -rn
- Kernel IP routing table
- Destination Gateway Genmask Flags MSS Window irtt Iface
- 0.0.0.0 192.168.50.1 0.0.0.0 UG 0 0 0 eno1
- 192.168.50.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1
- 192.168.200.1 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
- kazuya@ubuntu: ~
- $ sudo ufw status
- Status: active
-
- To Action From
- -- ------ ----
- 22/tcp ALLOW Anywhere
- 21/tcp ALLOW Anywhere
- 80/tcp ALLOW Anywhere
- 443/tcp ALLOW Anywhere
- 3270/tcp ALLOW Anywhere
- Anywhere ALLOW 192.168.200.1
- Anywhere ALLOW 192.168.50.11
- 22/tcp (v6) ALLOW Anywhere (v6)
- 21/tcp (v6) ALLOW Anywhere (v6)
- 80/tcp (v6) ALLOW Anywhere (v6)
- 443/tcp (v6) ALLOW Anywhere (v6)
- 3270/tcp (v6) ALLOW Anywhere (v6)
-
- Anywhere on tun0 ALLOW FWD Anywhere on eno1
- Anywhere on eno1 ALLOW FWD Anywhere on tun0
- Anywhere (v6) on tun0 ALLOW FWD Anywhere (v6) on eno1
- Anywhere (v6) on eno1 ALLOW FWD Anywhere (v6) on tun0
-
- kazuya@ubuntu: ~
- $
第三台机器 例如 Mac IP 192.168.50.11 要想连到 Ubuntu 里面的 z/OS
在 Mac 里加个路由,把 192.168.200.X 去路由去 192.168.50.15 Ubuntu 机器就可以
- /Users/kazuya
- $ sudo route -n add -net 192.168.200.0/24 192.168.50.15
- $ netstat -rn |grep "192.168.200"
- Routing tables
-
- Internet:
- Destination Gateway Flags Netif Expire
- default 192.168.50.1 UGScg en0
- ...
- 192.168.200 192.168.50.15 UGSc en0
这样其他机器就可以连上 z/OS,例如下面 Mac 连上 z/OS ftp,其他 ssh, 和 web 也可以
- vi ~/.ssh/config
-
- Host 192.168.200.1
- KexAlgorithms +diffie-hellman-group1-sha1
- HostKeyAlgorithms +ssh-rsa
-
-
- ssh ibmuser@192.168.200.1
z/OS 自带的 Java SDK 比较旧,可以到 IBM 官网下载最新版
SDK8_31bit_readme.txt 也要一并下载,里面有如何解压缩步骤
步骤是 先下到 Java J8.0 .PAX 压缩包
然后在 z/OS 加个新券,上面的 UAPP01 就是 HFS
HFS 在 z/OS 里改名为,例如 JVA800.HFS
然后,修改 USER.PARMLIB(BPXPRMDB)
从 ADCD.Z110.PARMLIB 里覆制到 USER.PARMLIB 修改
然后,挂上去,这样开机后,OMVS 就有 /usr/lpp/java 载点可放 Java SDK
UTMP01 HFS 也一并挂上去用来作解压缩暂存
然后,透过 ftp binary mode 上传
https://www.ibm.com/support/pages/java-sdk-products-zos
在生产环境 z/OS 是绝少关机,在学习环境,可以用以下步骤关机
关机指令要视乎开机 LOADPARM,开机起了什么,关机就要关上
首先,退出 ISPF IBMUSER TSO session 就是 按 F3 Exit 所有版面
回到 READY 提示,输入 logoff
然后,按 Ctrl+] 键退出返回 c3270 界面,再输入 exit 退出 c3270
然后,转入 c cicsa 关掉 CICS GUI 界面
然后,转入 -db9g stop db2 停了 DB2
然后,等 DB2 READY FOR START COMMAND,就可以输入 s shutall 来把其他服务例如 ftpd, sshd, httpd, mq 等等都停了
然后,回复 r 03,y, 回复 STOP ZFS
可以输入 D A,L 或按 F10 键更新画面
然后,输入 $p jes2,term 去把 JOB ENTRY SYSTEM 停了
然后,输入 f dlf,mode=drain
然后,输入 p dlf
最后,F10 等到只剩 00000,输入 z eod
最后,等到 HALT EOD SUCCESSFUL
然后,回到 hercules 界面
然后,回到 hercules 界面,在界面可以用 Esc 键互相切换 资源面页
然后,回到 hercules 命令界面,输入 exit 就可以
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。