在程序里必须注意数据在获取和转移的过程中数据编码的问题。perl的模块Encode 的处理模块可以很好的处理这个问题。
结果 = encode(编码方式a,要编码的字串);
结果 = decode(编码方式b,要编码的字串)
encode是按编码方式a,decode是以编码方式b解码。
TODO…
NAT就是虚拟机里的东西全部由主机来管理,你可以在虚拟机里访问主机,但是反过来 就不行。所以,你想在主机上访问虚拟机的ssh,需要特别的处理。
这时产生的虚拟机的ip一般为10.0.2.15
其实,就是在主机上的nat的网络连接方式增加端口转发规则。
Name: SSH (可以是任意唯一名)
Protocol: TCP
Host IP: 127.0.0.1
Host Port: 2222 (任何大于1024未使用的端口)
Guest IP: 虚拟机IP
Guest Port: 22 (SSH 端口)
这时你就可以使用127.0.0.1:2222的方式访问虚拟机里的ssh了。
这一种是比较落后的
sudo apt-get install gcc make binutils gawk x11-utils rpm build-essential
libaio1 libaio-dev libmotif4 libtool expat alien ksh pdksh unixODBC
unixODBC-dev sysstat elfutils libelf-dev binutils lsb-cxx libstdc++5
libmotif4 libmotif-common libstdc++5 libmotif-dev expat pdksh sysstat
libtool libmotif4 pcb-lesstif libdb4.6
没有lesstif2 用 pcb-lesstif代替,libaio1不要用这个上面的,我自己是下的源 包,而且版本是0.3.109
在安装过程中,看到提示缺少某个库函数的时候,不要简单的中断退出来,根据问题 的提示,利用google解决后,再retry下。
说明:在代码块中你可以看见”","
“在开始和结尾处,这是一个shell文件,
在debian上,
直接使用:
sh xx.sh
就可以使用了。当然,如果你想用手输入的话,找到对应的系统文件,敲进去就是了 。
相关脚本放在了这里
#!/bin/bash
`
groupadd oinstall;
groupadd dba;
groupadd oper;
useradd -m -s /bin/bash -g oinstall -G dba,oper oracle; #初始群组为 oinstall,有效群组为 dba、oper
passwd oracle;
`
这里一定要有”-m”选项,否则在你安装的过程中以oracle用户无法登入系统。 “-s”是 指定该用户使用的shell,在debian上,当然是bash了。
#!/bin/bash
echo "#">> /etc/sysctl.conf
echo "# Oracle 11gR2 entries">> /etc/sysctl.conf
echo "fs.aio-max-nr=1048576" >> /etc/sysctl.conf
echo "fs.file-max=6815744" >> /etc/sysctl.conf
echo "kernel.shmall=2097152" >> /etc/sysctl.conf
echo "kernel.shmmni=4096" >> /etc/sysctl.conf
echo "kernel.sem=250 32000 100 128" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range=9000 65500" >> /etc/sysctl.conf
echo "net.core.rmem_default=262144" >> /etc/sysctl.conf
echo "net.core.rmem_max=4194304" >> /etc/sysctl.conf
echo "net.core.wmem_default=262144" >> /etc/sysctl.conf
echo "net.core.wmem_max=1048586" >> /etc/sysctl.conf
echo "kernel.shmmax=1073741824" >> /etc/sysctl.conf
sysctl -p
注意最后一个命令,这里是立即生效刚刚修改过的系统文件。同样,该命令我也放在了 脚本中,请注意。 在安装的过程中,有一步是检查所有的先决条件是否满足,有一个地方会说
kernel.sem fixable
我在别的地方看见说这个警告没有影响,直到现在,我也是忽略它了,不知道有没有风 险。
apt-get install bzip2
apt-get install linux-headers-
uname -r
build-essential
必须有这两个,否则很容易不成功。
在VitualBox自带的安装包内这个iso文件一直存在着。我们只需将它安装上即可。 在虚拟机里,这里有两种安装方式命令行和图形界面。
命令行的请参考这篇文章here 唯一的坏处就是无法自动挂载。
mount /dev/cdrom /media/cdrom
cd /media/cdrom0
或者到/media/cdrom中去查看
首先在VitualBox的”设备”里的”安装增强型”,然后”xx.iso”文件就加在了桌面上。然 后命令行进入
/media/cdrom0
使用脚本
sh xxx.sh
就安装上了。最后重启。
在虚拟机的设置里有个共享文件夹的设置,选择你想要共享的文件夹,然后选择下面的 两个选项:”自动挂载”和”临时分配”。
sudo mkdir /mnt/shared
sudo mount -t vboxsf share /mnt/shared
这里的”share”就是共享文件夹的名字。
为了不能每次手动加载,可以使用脚本/etc/fstab
share /mnt/shared vboxsf rw, gid=username,uid=username,auto 0 0
还可以在 /etc/rc.local加入
mount -t vboxsf share /mnt/shared
umount -f /mnt/shared
awk 确实强大, 请参考这篇文章 here
wk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk [options] ‘script’ var=value file(s)
awk [options] -f scriptfile var=value file(s)
-F fs 指定输入分隔符,fs可以是字符串或者正则表达式
-v var=value 将外部变量赋给awk
-f 从脚本读取awk命令
awk脚本由模式和操作组成
awk '{print $0}' file #打印所有列
awk '{print $1}' file #打印第一列
awk '{print $1, $3}' file #打印第一和第三列
cat file | awk '{print $3, $1}' #打印第三列和第一列,注意先后顺序。
cat file | awk '{print $3, $NF}' #打印第三列和最后一列
awk -F ":" '{print $1, $3}' #以“:”为分隔符分割列,然后打印第一列和第三列
$0表示所有列
-F:指定分隔符
$(NF)表示最后一列,$(NF-1)表示倒数第二列,以此类推。
如果我想打印N列之后的所有列,该怎么办?
解决方法是,把前N列都赋值为空,然后打印所有列。
awk '{for(i=1;i<=N;i++){$i=""}; print $0}' file
https://opengers.github.io/linux/awk-format-print/