常用linux命令和配置
find只查看文件和只查看目录
find -type f -name clexec
find -type d -name clexec
解压rpm
[root@sj_x861 2]# ls
etc opt
[root@sj_x861 2]# rpm2cpio ../FJSVclrms-4.3.0-05.rhel5_i386.rpm | cpio -idm
cpio: ./etc/init.d/clrms not created: newer or same age version exists
cpio: ./etc/opt/FJSVcluster/FJSVclrms not created: newer or same age version exists
!如果已经解压过,则会出现上述信息,版本已经最新的话,就不会重复常见解压后的文件。
rpm命令
查看rpm包将安装那些文件,安装到哪些目录下:
rpm –qpl rpm包
touch创建文件
touch只能创建文件,包括vi,文件所在的上层目录必须存在。
rpm包查询
##查看rpm包的位数,32位还是64位。
[root@c3 ~]# rpm -qa --queryformat %-{name}-%{version}-%{release}-%{arch}"\n" | grep FJSVclapi
FJSVclapi-4.3.2-03-x86_64
[root@node2 CVS_SRC]# rpm -qa --queryformat %-{name}-%{version}-%{release}-%{arch}"\n" | grep FJSVclapi
FJSVclapi-4.3.2-03-i386
-noarch说明这个包可以在各个不同的cpu上使用。基于CPU共通标准的RPM包。
rpm卸载失败,因为prerun脚本执行失败:
[root@bx15 ~]# rpm -e FJSVhvgd-4.2.3-4.x86_64
Error: hvenv.local modification aborted.
This error is due to /usr/opt/reliant/bin does not have enough space.
error: %preun(FJSVhvgd-4.2.3-4.x86_64) scriptlet failed, exit status 1
经搜索,其解决方法为加 --noscripts 标记来删除RPM。
--noscripts 相当于 --nopre –nopost(no post install) --nopreun --nopostun(no post uninstall).
[root@bx15 ~]# rpm -e FJSVhvgd-4.2.3-4
Error: hvenv.local modification aborted.
This error is due to /usr/opt/reliant/bin does not have enough space.
error: %preun(FJSVhvgd-4.2.3-4.x86_64) scriptlet failed, exit status 1
[root@bx15 ~]# rpm -e --nopreun FJSVhvgd-4.2.3-4
/var/tmp/rpm-tmp.93148: line 72: /usr/opt/reliant/bin/hvenv.local: No such file or directory
Unable to rewrite hvenv.local with the contents of temp file created.
[root@bx15 ~]# rpm -e FJSVhvgd-4.2.3-4
error: package FJSVhvgd-4.2.3-4 is not installed
end
若要查看与RPM关联的scripts,使用--script查询RPM包。
$rpm -q --scripts package
卸载时,若系统里有同一程序的多个安装版本要一起删除,可使用--allmatches标记,如
$ rpm -e --noscripts --allmatches 要卸载的包
ssh远程无密码登录设置,多节点之间无密码登陆
[root@node1 ~]# ssh-keygen -t rsa
!所有节点执行这个命令,将所有的公钥合并到文件authorized_keys中,
!放到每个节点的.ssh目录下即可=》实现互相无密码访问。
!不需要输入密码,但是known_hosts文件还是会要求选择是否连接,并且保存到该文件(第一次连接的时候,可以设置不使用known_hosts文件)。
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): =》如果输入密码,scp动作的时候就会要求输入密码。
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
b5:8f:b6:b7:1e:56:47:69:87:69:78:93:29:a2:4e:bc root@node1
[root@node1 ~]# ll /root/.ssh/id*
-rw------- 1 root root 1675 Aug 17 09:27 /root/.ssh/id_rsa
-rw-r--r-- 1 root root 392 Aug 17 09:27 /root/.ssh/id_rsa.pub
[root@node1 ~]# scp /root/.ssh/id_rsa.pub root@193.168.140.185:/root/.ssh/authorized_keys
root@193.168.140.185's password:
id_rsa.pub
[root@node1 .ssh]# cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEoQIBAAKCAQEApNnws0T9hyQ6DU0l/d6FrWXqH9HGPfgoP5NwVrZhqTBxnaAX
89sgGcJqSC5W+Cb/9A+fza3Mm2EkUxFaqL1DbMo/9dggSM9evg6GnClhKDkDLhca
gxkoihtne2D5cFpDbO8cIdPu9Iep9DRVTjUjWRQZnvTedzG8VtNpBM8sKpGIvlGY
y7bkSx9iNUbhBtoIyvaurPeexBAQmk5ltgimF/7NFqYChEoZR2VBTOae//pZR2Mc
kEEGVjUVGylf3ENS1DHWIN4tjF24YFJ129GukRivbYRgEGOVcXwWUssafSf4j51m
Pt1oQs7+Qu4h33+t9SxW3wJEIkp46U7TJL5/gwIBIwKCAQAS1xQxvr3jjxyTzk18
GW5c9bRbaG5te3JQaJ8f2lRN2aaVq+V69HiyfJ5upjXTN6g5Jltn9psKcYB+haP2
BwBkNF8UyD40NPTihVE2ayEL6UIxJzY63k3GpAvTlg3g9F96KfSWJtl7CDCuMd3d
DWMgH43mR97pDP+U5PYPLZ6lx05QtrC4gIZAQLo1hmt+uB7Wdh9qYgsT8hxdQPfX
TuzY/QhFksOitmXodc5sXI9wZ5XcK9CZPR/HGkBfK98U644SRz3stzj9HHk1n/XU
VNP21QM99l78JWtcYZXWN9LLHSoniUqNdI85uEH3eDl+D3YC4DDD2WC9dU1TYawF
JOErAoGBANkN+gkUomG+vyKthSsY61KbOH7ROBrmqoomCtVtVM99qAXRPFwaTA9B
Fmzk5UbNjIxrnX9cRSEiKPAqjEjebDdWQ9a74SHVNX+TaOLDFYoaPcZfvzSWryRQ
JnvT6zQjefJKq2XShHNy5fUmxiS36WOLGzqSNzIGpMHeU3X8xwUVAoGBAMJuGQVo
r+vaKeIzaYlZI6hbNJz45aLu3w5ESxeswT4vsL7kpXaaQg5USAYz13Ea422VRjv3
JQ8l5nGv3TcGygBd/qGNudkQbxQ3sewW1eXHEwyvmWxbbQW4/7tsd3HobtVrALQW
nQ+W3MfmzAYYjwHQ53GbHQOh41JxZLv69Mg3AoGADGcy2/KM76R/81pfYYxlN+uc
1Av0k9KqqM75TgY/XFBSvoD8IoUo6u3GxGTZ5snqxjII//ak3VJovURCh9IyEcpq
RsjoSxN/ZmAx4RJ2QmfmRdmV5b93uO6jHQTLnJRQHHlLn2sdgvCfbRgolGJH2c1v
RSztNg8CGbTu04rJi0MCgYEAt1HdE7p5+6HPuASWtLMhnrxkzoRGOolzOVZVbhfp
ZoS8lrpS3YohBjI1R6042FsuNB8HtOG1OisMedGzUSOohADaI0sc8TthatVtPa8h
cj9bGpbvve/NMUgHD8yrIkGNEl2S8vC/+MFxFEACMaIgb20x/WZdL09+j498PDXC
OR0CgYA1FOF2YYM49KRUH5rL7cVWYHs3VUsDguVFV7LOJmHlipEZTCJ0QKc8alVI
otqnEdnPT8fQqLibcIJY4seDBfaG0nmjl4JMg6enUDjk9CeZquNJPsc6iyUNstnD
cra7euafSy/g4wRwQKdEvL/Tbz0nl5+RYinqZCOgSjh6ODhExQ==
-----END RSA PRIVATE KEY-----
[root@node1 .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApNnws0T9hyQ6DU0l/d6FrWXqH9HGPfgoP5NwVrZhqTBxnaAX89sgGcJqSC5W+Cb/9A+fza3Mm2EkUxFaqL1DbMo/9dggSM9evg6GnClhKDkDLhcagxkoihtne2D5cFpDbO8cIdPu9Iep9DRVTjUjWRQZnvTedzG8VtNpBM8sKpGIvlGYy7bkSx9iNUbhBtoIyvaurPeexBAQmk5ltgimF/7NFqYChEoZR2VBTOae//pZR2MckEEGVjUVGylf3ENS1DHWIN4tjF24YFJ129GukRivbYRgEGOVcXwWUssafSf4j51mPt1oQs7+Qu4h33+t9SxW3wJEIkp46U7TJL5/gw== root@node1
[root@node1 .ssh]# cat known_hosts
193.168.140.99 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAs+afXo9zPfOBbTj044/xY/8bPtI7CSa2BUtfDEeIacnTw4yQCBObHekOhxZkX+hxtAESk0VslIZlgmU+S+FAxviVh7n/c8eDNqFs6XN8izsFeyGfcZ+onO9ydC/iz2Tew5mUpVLxwTROr04QvpfXV1b1y5xvMJMFwzAVyXti2XMCW7/dDVikFNkAdwM0/o4+2SyoXCIObBoj4yHS6DgXnmie9PI7NmVcWI1macARlpircQ5gD4FtFZPSlUdxVzJeJWqhCa3nvX56W9ip0ouS9xGLXhWhpP0WxE1aHjFJ22uy6acu5Ig4aJLpaQH8Hk0+n2d55xNr7pXzN38EF46RbQ==
193.168.141.164 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvC0AJvtebN96RU2FL31WJZ8jYXV/JlPUBiopq+5Idl1gaMIOCVDCjcxddv4+vp7mrTz8v1g/m9uz8lghkDdQnUKHFnwYNJMZ1e7mySTpvBWmQuGWD2EY0YUdZh1s79V6bqE+lUdYbv8k6kdt/ZjHiKFWRoKSVXythfZ265IjGuqt8G+YreJE9b51XPPQEyq7g48KrYg/jyyGXsQAfC2tRLmlgCe3RmgytPo+jGR50v9YJb27/hPAmXf7piR43WB1i3sCkje7pXK402k1fILhGEGupjodk64K18XSY/NzTbnYTFP3ul22cXuTzXuL+dmGLNtFZAD9QLSSrJiL4phz1w==
193.168.140.185 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApqrSAycDgvrq9TgxK4pc8O6Zq/Wn0q2GejpxLIHFuaOeimOZBeGmBF7mrd6JregeoAyudZsggzguc1stE8OXAEJB5PbMmeKQBNo6c2QYg+GZaPqVli6OUeRKwLXovBx5tgkzLMbHgQ+2ituRG1Tjqjd9ltcRv4DzB8kgJBSwOXhsNHfjgMezcKyZXp+Zfk4h/7S6FfyVdOek2tNbZV2QSFuU9bz4e5QfLr+v2b2y48epO91jIvOAjRWvO9kyf1zCvZGdwWTwic20UMwDHt8jO85t17ysx+vRFn1UKER3px+3jmV90u9hfBvZMXZHJun0IVj+spxnZdcvVCSJNoI4iw==
[root@node1 .ssh]#
私钥保留在本地,保存私钥,登陆的时候需要用私钥登陆.服务器用公钥验证,通过则允许自己登陆.
公钥拷贝到远程机器(用于鉴权,如果对方提供了正确的私钥,则允许对方连接到自己)
执行scp命令的时候,使用本地的私钥去配对,配对成功则允许执行操作。与known_hosts文件无关。
要登陆谁,就把公钥给谁(让对方允许自己登陆),私钥自己留着就行了。
scp known_hosts文件记录了第一次连接时的选择,但是没有密钥信息:
[root@node1 ~]# scp pcl.sh root@193.168.141.164:/root/
The authenticity of host '193.168.141.164 (193.168.141.164)' can't be established.
RSA key fingerprint is 5a:92:3b:aa:51:d9:a4:6d:cb:5a:ea:31:25:cb:a5:ed.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '193.168.141.164' (RSA) to the list of known hosts.
pcl.sh 100% 5514 5.4KB/s 00:00
!已经设置了无密码登陆,选择yes以后,就不用再输入密码了。
[root@node1 ~]# ll /root/.ssh/known_hosts
-rw-r--r-- 1 root root 397 Aug 17 09:54 /root/.ssh/known_hosts
[root@node1 ~]# cat /root/.ssh/known_hosts
193.168.141.164 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvC0AJvtebN96RU2FL31WJZ8jYXV/JlPUBiopq+5Idl1gaMIOCVDCjcxddv4+vp7mrTz8v1g/m9uz8lghkDdQnUKHFnwYNJMZ1e7mySTpvBWmQuGWD2EY0YUdZh1s79V6bqE+lUdYbv8k6kdt/ZjHiKFWRoKSVXythfZ265IjGuqt8G+YreJE9b51XPPQEyq7g48KrYg/jyyGXsQAfC2tRLmlgCe3RmgytPo+jGR50v9YJb27/hPAmXf7piR43WB1i3sCkje7pXK402k1fILhGEGupjodk64K18XSY/NzTbnYTFP3ul22cXuTzXuL+dmGLNtFZAD9QLSSrJiL4phz1w==
[root@node1 ~]#
!每次连接都需要公钥和私钥(即密码),但是ssh-keygen将私钥保存到文件中,并且设置为空,无密码。
!autorized_keys和known_hosts文件,是什么关系。
私钥和公钥
[root@node3 config]# scp bashrc $NODE4:`pwd`
The authenticity of host '193.168.140.185 (193.168.140.185)' can't be established.
RSA key fingerprint is 22:bb:94:97:12:0e:24:1a:5f:55:ed:9d:4f:89:d7:c5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '193.168.140.185' (RSA) to the list of known hosts.
bashrc
[root@node1 crm_tool]# echo $NODE3
root@193.168.141.164
=>known_hosts和公钥,不是同一个东西.
ssh选项
等待远程命令结束,即刻返回:
ssh -S none root@192.168.251.93 -f /sbin/shutdown -r 0
scp能自动创建远程目录吗?
远程root账户,ssh连接
必须禁用防火墙iptables,或者修改iptables的配置文件。
[root@node1 ~]# chkconfig --level 12345 iptables off
[root@node1 ~]# chkconfig --list iptables
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@node1 ~]# service iptables stop
禁用selinux:
配置远程机器上的sshd服务,允许远程登陆:
[root@node1 data]# cat /etc/ssh/sshd_config | grep PermitRootLogin
PermitRootLogin yes
# "PermitRootLogin without-password". If you just want the PAM account and
[root@node1 data]#
end
时区设置和多台机器时间同步
设置时区-推荐使用timeconfig
tzselect
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
timeconfig 图形界面,方便使用,rhel用
修改时区后,修改时间
date -s 11/03/2009 月日年
date –s 10:50:50 时分秒
hwclock –w 将当前时间写入bios保存,避免重启丢失时间。
查看当前时区
date –R
[root@node1 ~]# date -R
Thu, 20 Aug 2015 10:54:11 +0800 =》数字与实际的时区不一定一致,timeconfig更直观准确。但是实际的时间可以看出时区是否一致。
[root@node1 ~]# date
Thu Aug 20 10:54:13 CST 2015
[root@node1 ~]#
本地时间服务器设置
显示文件的指定行号范围内的内容
[root@node1 yum.repos.d]# sed -n '780,790p' /usr/lib/python2.4/site-packages/yum/yumRepo.py
copy_local = copy_local,
reget = reget,
failure_callback = self.failure_obj,
interrupt_callback=self.interrupt_callback,
checkfunc=checkfunc,
**ugopts)
remote = url + '/' + relative
try:
result = ug.urlgrab(misc.to_utf8(remote), local,
[root@node1 yum.repos.d]#
[root@node1 yum.repos.d]# sed -n '780,790p' /usr/lib/python2.4/site-packages/yum/yumRepo.py
copy_local = copy_local,
reget = reget,
failure_callback = self.failure_obj,
interrupt_callback=self.interrupt_callback,
checkfunc=checkfunc,
**ugopts)
remote = '/mnt/cdrom' + '/' + relative
try:
result = ug.urlgrab(misc.to_utf8(remote), local,
[root@node1 yum.repos.d]#
!awk '{print NR"\t"$0}'也可以,太麻烦了。更新到博客园上去。
rhel yum本地光驱作源安装软件(比较麻烦,最好安装的时候把需要的软件安装完全)
睡不着, 写个简单的教程, 使用 RHEL 6.5 DVD 做本地 YUM 源
适用于 RHEL 6.5 32位 和 64位 系统.
首先从 Red Hat 官网下载 DVD
rhel-server-6.5-i386-dvd.iso
MD5: 04A1FA06A6B7E70CD586535EEA83C0EF
rhel-server-6.5-x86_64-dvd.iso
MD5: A84D4D9EDDB36FB417832166CD10A4C2
复制代码
接着安装系统.
系统安装完之后, 就是配置 YUM 源了.
我使用的是 VMware 虚拟机, 将 DVD 设置为连接, 进入系统后, 系统会将DVD挂载在 "/media/RHEL_6.5 x86_64 Disc 1" 目录.
卸载先:
umount /media/RHEL_6.5\ x86_64\ Disc\ 1/
复制代码
创建相关目录:
mkdir /mnt/cdrom
复制代码
然后将DVD挂载到 /mnt/cdrom 目录:
mount /dev/cdrom /mnt/cdrom
复制代码
如果使用 iso 文件, 先将 iso 上传到服务器, 例如上传到以下目录 /data/src/rhel/6/rhel-server-6.5-x86_64-dvd.iso , 使用以下命令挂载DVD iso
mount -o loop /data/src/rhel/6/rhel-server-6.5-x86_64-dvd.iso /mnt/cdrom
复制代码
生成 YUM 源文件:
cat > /etc/yum.repos.d/rhel6.repo <<EOF
[rhel6]
name=rhel6
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
EOF
复制代码
sed -i "s#remote = url + '/' + relative#remote = '/mnt/cdrom' + '/' + relative#g" /usr/lib/python2.6/site-packages/yum/yumRepo.py
复制代码
导入rpm的签名信息
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
复制代码
清除缓存
yum clean all
复制代码
如果出现以下错误提示
[root@localhost ~]# yum clean all
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Existing lock /var/run/yum.pid: another copy is running as pid 2267.
Another app is currently holding the yum lock; waiting for it to exit...
The other application is: PackageKit
Memory : 48 M RSS (365 MB VSZ)
Started: Sat Nov 23 01:28:11 2013 - 10:00 ago
State : Sleeping, pid: 2267
先 Kill 掉 YUM
kill -9 2267
复制代码
然后再
yum clean all
复制代码
至此, 本地源配置完毕.
yum本地光驱作源配置
rhel5:
[root@localhost yum.repos.d]# cat rhel5.repo (配置好这个文件就可以了)
[rhel-dvd-server]
name=Red Hat Enterprise Linux - DVD Server Repository
baseurl=file:///home/samba/yum_source_iso/Server/
enabled=1
gpgkey=file:///home/samba/yum_source_iso/RPM-GPG-KEY-redhat-release
gpgcheck=1
[rhel5]
name=rhel5
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
rhel6:
rhel7:
!将光驱内容mount后拷贝到机器上去。
[root@node3 ~]# yum install smb
Loaded plugins: product-id, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Setting up Install Process
No package smb available.
Nothing to do
!使用官方软件源,没有注册的话,报错。
[root@node1 yum.repos.d]# rpm -qa | grep yum
yum-security-1.1.16-21.el5
yum-metadata-parser-1.1.2-4.el5
yum-updatesd-0.9-6.el5_10
yum-3.2.22-40.el5
yum-rhn-plugin-0.5.4.1-7.el5
[root@node1 yum.repos.d]# rpm -qa | grep yum | xargs rpm -e --nodeps
不检查依赖,直接删除rpm包
卸载系统安装的yum。
安装自己下载yum。
将RHEL自带的yum替换成对应版本的CentOS的yum包。
# wget http://mirrors.163.com/centos/6.5/os/i386/Packages/yum-metadata-parser-1.1.2-16.el6.i686.rpm
# wget http://mirrors.163.com/centos/6.5/os/i386/Packages/yum-3.2.29-40.el6.centos.noarch.rpm
# wget http://mirrors.163.com/centos/6.5/os/i386/Packages/yum-plugin-fastestmirror-1.1.30-14.el6.noarch
安装yum软件包
注意:单个的安装包可能会依赖其它包(例如yum和yum-fastestmirror会相互依赖),所以我们可以把所有这些包放在一起,用一行命令将它们同时安装即可:
1
# rpm -ivh yum-metadata-parser-1.1.2-16.el6.i686.rpm yum-3.2.29-40.el6.centos.noarch.rpm yum-plugin-fast
更换yum源。使用163的源
# cd /etc/yum.repos.d/
# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
# vi CentOS6-Base-163.repo
编辑文件,把文件里面的$releasever全部替换为版本号,即6.5 最后保存!
yum clean all 清楚缓存
yum makecache 重建缓存
yum update 更新系统
yum upgrade 大规模更新系统
mkdir可以级联创建目录,但是touch是基于文件的,应该不能把,除非添加了选项:
[root@node1 yum.repos.d]# mkdir -p /media/Server/repodata/
[root@node1 yum.repos.d]# touch /media/Server/repodata/repomd.xml
df,du文件管理
du -h --max-depth=1
df –h
mount远程磁盘的命令(需要root权限):
[root@localhost wanglc]#
mount.cifs //10.167.129.95/pcl/~wanglc /home/wanglc/95/ -o username=pcl,uid=504,gid=502,file_mode=0755,dir_mode=0755
Password: (wlch:此处需要输入远程磁盘的访问密码,权限是mode与运算之后的结果。)
[root@localhost wanglc]# ll 95/
total 8075808
drwxr-xr-x 1 wanglc crm 0 Feb 18 10:54 15????????????????????????
drwxr-xr-x 1 wanglc crm 0 Sep 10 2013 CRM_12
drwxr-xr-x 1 wanglc crm 0 Feb 14 18:13 CRM_13
drwxr-xr-x 1 wanglc crm 0 Nov 15 17:16 CRM_14
drwxr-xr-x 1 wanglc crm 0 Mar 17 13:09 CRM_15
drwxr-xr-x 1 wanglc crm 0 Feb 18 13:21 DRIVER_KIT_for_rhel5.9_Intel64
drwxr-xr-x 1 wanglc crm 0 Feb 19 13:42 Work(Security)
-rwxr-xr-x 1 wanglc crm 8269627392 Oct 23 2012 serverview.iso
drwxr-xr-x 1 wanglc crm 0 Feb 18 14:48 ??????????????????
drwxr-xr-x 1 wanglc crm 0 Mar 10 13:09 ???????????????ct-st
不要mount到自己的用户目录下,因为自己的用户目录下有很多配置文件,mount的内容,会覆盖自己家目录中的配置文件,导致配置失效(虽然配置不会丢失,umount以后,又恢复了)。
新建一个mount目录,然后再执行以上mount命令。
rsync和远程mount实现同步服务器(结合例行管理程序crontab,定期备份,每15min)
[root@localhost ~]# chkconfig --list rsync
rsync on
[root@localhost ~]#
rsync的执行程序怎么绑定的?
crontab例行程序,每过15min执行一次mirror.sh脚本。
[root@localhost ~]# cat mirror.sh
#!/bin/sh -e
num=`ls /media/vpdc-origin/ | wc -l`
if [ $num -le 0 ]; then
echo '// ERROR: /media/vpdc-orign is empty.' >> /var/log/rsync.out
exit 1
fi
if pgrep -f 'rsync ' > /dev/null 2>&1; then # 有一个未完成的 rsync 正在同步
echo '// continue' >> /var/log/rsync.out
exit 0
fi
###################################################################
# Q: 为什么不直接从 origin 同步到 master,为什么要通过 agent 中转?
# A: 为了调整 master 文件的默认权限(只读)。
#
# Q: 为什么要禁止 master 文件的可写权限?
# A: 避免在镜像同步周期中,文件内容被误操作导致镜像本身失去意义。
#
# Q: 为什么要 -b 备份?
# A: 发生过VPDC被误更新(主要是FNST)的意外,导致原始文件丢失。
###################################################################
if [ x"$1" = "xsync" ]; then # 每15分钟做一次镜像
echo '/**' >> /var/log/rsync.out 2>&1
LANG=zh_CN.UTF-8 rsync -azuvPh --delete --perms --exclude-from='/root/mirror.ignore' /media/vpdc-origin/ /media/vpdc-agent/ >> /var/log/rsync.out 2>&1
echo ' *' >> /var/log/rsync.out 2>&1
LANG=zh_CN.UTF-8 rsync -azuvPh -b --delete --chmod=Dug=rwx,Fug=r --exclude-from='/root/mirror.ignore' /media/vpdc-agent/ /media/vpdc-master/ >> /var/log/rsync.out 2>&1
echo ' */' >> /var/log/rsync.out 2>&1
exit 0
fi
if [ x"$1" = "xsafe" ]; then # 每天做一次安全备份
# 移到公司文件服务器后可无视备份
exit 0
fi
[root@localhost ~]#
[root@localhost 24.43A20_RHEL5_Intel64]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
93G 78G 11G 89% /
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 1.5G 0 1.5G 0% /dev/shm
//10.124.230.36/252fns/pub/
1.9T 1.4T 427G 77% /media/vpdc-origin
//10.167.129.95/pcl/vpdc-master
5.0T 4.6T 503G 91% /media/vpdc-master
[root@localhost 24.43A20_RHEL5_Intel64]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
//10.124.230.36/252fns/pub/ on /media/vpdc-origin type cifs (ro,mand)
//10.167.129.95/pcl/vpdc-master on /media/vpdc-master type cifs (rw,mand)
nfsd on /proc/fs/nfsd type nfsd (rw)
[root@localhost 24.43A20_RHEL5_Intel64]#
!远程磁盘虽然mount到本地了,但是读写还是通过网络,速度比较慢。
sed常用操作
[seesea@UC ~]$ sed -n '/{/,/}/{=;p}' file | sed '/^[0-9]\+$/{N; s/\n/\t/}'
1 function() {
2 tobedeleted
3 test2
4 test3
5 test4
6 }
9 function2() {
10 temp1
11 temp2
12 temp3
13 temp4
14 }
sed直接修改文件,s///
[root@node4 grub]# sed -i "s/default=1/default=0/" grub.conf
[root@node4 grub]# grep -n2 default grub.conf =》显示default上下两行。
8-# initrd /initrd-version.img
9-#boot=/dev/sda
10:default=0
11-timeout=5
12-splashimage=(hd0,0)/grub/splash.xpm.gz
SVN
=>svn错误
405 Mathod Not Allowed
网络不好,提交内容多的时候,经常报这个错误,过一段时间好像可以自动恢复了。
应该是svn自己库同步的问题。其他人已经可以check产物了。
!如果提交产物与库中的其他产物不冲突,就不需要加锁。网络好的时候,再提交。
cp拷贝软连接之后,还是软连接,如果要备份,应该拷贝实体rpm包(-a选项没有影响)
[root@node4 old_rpm]# ls
FJSVclrms-4.3.0-05.rhel5_i386.rpm FJSVclrwz-4.3.0-05.rhel5_i386.rpm
[root@node4 old_rpm]# ll
total 0
lrwxrwxrwx 1 root root 38 Aug 18 23:18 FJSVclrms-4.3.0-05.rhel5_i386.rpm -> ../../../pkgs/FJSVclrms.rhel5_i386.rpm
lrwxrwxrwx 1 root root 38 Aug 18 23:17 FJSVclrwz-4.3.0-05.rhel5_i386.rpm -> ../../../pkgs/FJSVclrwz.rhel5_i386.rpm
cp的时候修改名字,添加-a选项,不影响文件md5值。
[root@node4 cd]# cp -a ./Linux/pkgs/FJSVclrwz.rhel5_i386.rpm ~/old_rpm/FJSVclrwz-4.3.0-05.rhel5_i386.rpm
[root@node4 cd]# md5sum ./Linux/pkgs/FJSVclrwz.rhel5_i386.rpm
842dc05e6e04284429d059422cf5c581 ./Linux/pkgs/FJSVclrwz.rhel5_i386.rpm
[root@node4 cd]# ll ./Linux/pkgs/FJSVclrwz.rhel5_i386.rpm
-rw-r--r-- 1 root root 85335 May 13 2011 ./Linux/pkgs/FJSVclrwz.rhel5_i386.rpm
[root@node4 cd]# md5sum ~/old_rpm/FJSVclrwz-4.3.0-05.rhel5_i386.rpm
842dc05e6e04284429d059422cf5c581 /root/old_rpm/FJSVclrwz-4.3.0-05.rhel5_i386.rpm
[root@node4 cd]# ll ~/old_rpm/FJSVclrwz-4.3.0-05.rhel5_i386.rpm
-rw-r--r-- 1 root root 85335 May 13 2011 /root/old_rpm/FJSVclrwz-4.3.0-05.rhel5_i386.rpm
[root@node4 cd]#
=>update的时候,提示有文件冲突.
在红色字体上,右键,选择冲突解决方法,选择"标记为已解决"后,冲突提示消失.
右键选择 using theirs 或者 using mines,都是提示下面的错误:
有冲突的产物,文件名,右键,选择"edit conflicts"
提交状态:改增删.
=>svn基本用法:
删除产物,修改产物名称,提交修改(注意不要提交别人的修改).
svn错误
405 Mathod Not Allowed
网络不好,提交内容多的时候,经常报这个错误,过一段时间好像可以自动恢复了。
应该是svn自己库同步的问题。其他人已经可以check产物了。
!如果提交产物与库中的其他产物不冲突,就不需要加锁。网络好的时候,再提交。
cp拷贝软连接之后,还是软连接,如果要备份,应该拷贝实体rpm包(-a选项没有影响)
[root@node4 old_rpm]# ls
FJSVclrms-4.3.0-05.rhel5_i386.rpm FJSVclrwz-4.3.0-05.rhel5_i386.rpm
[root@node4 old_rpm]# ll
total 0
lrwxrwxrwx 1 root root 38 Aug 18 23:18 FJSVclrms-4.3.0-05.rhel5_i386.rpm -> ../../../pkgs/FJSVclrms.rhel5_i386.rpm
lrwxrwxrwx 1 root root 38 Aug 18 23:17 FJSVclrwz-4.3.0-05.rhel5_i386.rpm -> ../../../pkgs/FJSVclrwz.rhel5_i386.rpm
cp的时候修改名字,添加-a选项,不影响文件md5值。
[root@node4 cd]# cp -a ./Linux/pkgs/FJSVclrwz.rhel5_i386.rpm ~/old_rpm/FJSVclrwz-4.3.0-05.rhel5_i386.rpm
[root@node4 cd]# md5sum ./Linux/pkgs/FJSVclrwz.rhel5_i386.rpm
842dc05e6e04284429d059422cf5c581 ./Linux/pkgs/FJSVclrwz.rhel5_i386.rpm
[root@node4 cd]# ll ./Linux/pkgs/FJSVclrwz.rhel5_i386.rpm
-rw-r--r-- 1 root root 85335 May 13 2011 ./Linux/pkgs/FJSVclrwz.rhel5_i386.rpm
[root@node4 cd]# md5sum ~/old_rpm/FJSVclrwz-4.3.0-05.rhel5_i386.rpm
842dc05e6e04284429d059422cf5c581 /root/old_rpm/FJSVclrwz-4.3.0-05.rhel5_i386.rpm
[root@node4 cd]# ll ~/old_rpm/FJSVclrwz-4.3.0-05.rhel5_i386.rpm
-rw-r--r-- 1 root root 85335 May 13 2011 /root/old_rpm/FJSVclrwz-4.3.0-05.rhel5_i386.rpm
[root@node4 cd]#
find只查看文件
[root@sj_x861 CVS_SRC]# find -type f -name clexec
./CL/command/clexec/clexec
rhel禁用IPv6
1. IPv6機能を以下の手順で無効化します。
openibパッケージがインストールされているかを確認します。
# rpm -qa openib
インストールされている場合、/etc/ofed/openib.confファイルを編集します。
# vi /etc/ofed/openib.conf
IPOIB_LOAD=no
SDP_LOAD=no
/etc/sysconfig/networkファイルを編集します。
"NETWORKING_IPV6"の記述がない場合には、追記します。
# vi /etc/sysconfig/network
NETWORKING_IPV6=no
/etc/modprobe.confファイルを編集します。
# vi /etc/modprobe.conf
alias net-pf-10 off
options ipv6 disable=1
服务配置,单用户启动samba服务:
[root@node4 modules]# chkconfig --level 1 smb on
[root@node4 modules]# chkconfig --list smb
smb 0:off 1:on 2:on 3:on 4:on 5:on 6:off
[root@node4 modules]# service smb restart
Shutting down SMB services: [FAILED]
Shutting down NMB services: [FAILED]
Starting SMB services: [ OK ]
Starting NMB services: [ OK ] =》nmb正常启动。
[root@node4 modules]#
[root@node4 modules]# ls
2.6.18-398.el5
[root@node4 modules]# chkconfig --list nmb
error reading information on service nmb: No such file or directory
单用户模式ssh连接远程主机(需要开始单用户下的网络和sshd服务)
[root@node3 ~]# chkconfig --list network
network 0:off 1:on 2:on 3:on 4:on 5:on 6:off
[root@node3 ~]# chkconfig --list sshd
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@node3 ~]# chkconfig --level 1 sshd on
[root@node3 ~]# chkconfig --list sshd
sshd 0:off 1:on 2:on 3:on 4:on 5:on 6:off
[root@node3 ~]#
有些安装包需要PAE内核支持(PAE支持大内存,32位系统有时候需要安装,内存大的话,最好直接使用PAE内核)
PAE内核在Linux的安装镜像中有,两个rpm包,找到安装,启动PAE内核即可.
[root@node4 ~]# uname -a
Linux node4 2.6.18-398.el5 #1 SMP Tue Aug 12 06:26:57 EDT 2014 i686 i686 i386 GNU/Linux
[root@node3 ~]# cd /lib/modules/
[root@node3 modules]# ls
2.6.18-398.el5
[root@node2 ~]# uname -a
Linux node2 2.6.18-398.el5PAE #1 SMP Tue Aug 12 06:31:42 EDT 2014 i686 i686 i386 GNU/Linux
[root@node1 ~]# cd /lib/modules/
[root@node1 modules]# ls
2.6.18-398.el5 2.6.18-398.el5PAE 2.6.18-53.el5PAE
[root@node1 ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-398.el5PAE)
root (hd0,0)
kernel /vmlinuz-2.6.18-398.el5PAE ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-398.el5PAE.img
title Red Hat Enterprise Linux Server (2.6.18-398.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-398.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-398.el5.img
[root@node1 ~]#
[root@node4 cd]# find -type f -name "*PAE*"
./ClusterStorage/kmod-cmirror-PAE-0.1.22-3.el5.i686.rpm
./ClusterStorage/kmod-gfs-PAE-0.1.34-22.el5.i686.rpm
./ClusterStorage/kmod-gnbd-PAE-0.1.5-2.el5.i686.rpm
./Server/kernel-PAE-2.6.18-398.el5.i686.rpm
./Server/kernel-PAE-devel-2.6.18-398.el5.i686.rpm
[root@node4 cd]# rpm -ivh ./Server/kernel-PAE-2.6.18-398.el5.i686.rpm
warning: ./Server/kernel-PAE-2.6.18-398.el5.i686.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:kernel-PAE ########################################### [100%]
[root@node4 cd]# rpm -ivh ./Server/kernel-PAE-devel-2.6.18-398.el5.i686.rpm
warning: ./Server/kernel-PAE-devel-2.6.18-398.el5.i686.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:kernel-PAE-devel ########################################### [100%]
[root@node4 cd]#
[root@node4 cd]#
[root@node4 cd]# cd /lib/modules/
[root@node4 modules]# ls
2.6.18-398.el5 2.6.18-398.el5PAE
[root@node4 grub]# sed -i "s/default=1/default=0/" grub.conf =>sed直接修改文件,s///
[root@node4 grub]# grep -n2 default grub.conf =》显示default上下两行。
8-# initrd /initrd-version.img
9-#boot=/dev/sda
10:default=0
11-timeout=5
12-splashimage=(hd0,0)/grub/splash.xpm.gz
[root@node4 grub]#
关闭linux的邮件服务
anaconda-ks.cfg cd crm_tool install.log old_rpm pcl.sh songjie yum_source_iso
You have new mail in /var/spool/mail/root =>关闭,就不会再提示.
[root@node4 ~]# service sendmail stop
Shutting down sm-client: [ OK ]
Shutting down sendmail: [ OK ]
[root@node4 ~]# chkconfig --list sendmail
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@node4 ~]# chkconfig sendmail off
[root@node4 ~]# chkconfig --list sendmail
sendmail 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@node4 ~]#
rsh远程shell命令
静态IP配置
linux的diff和Beyond Compare:
[root@node1 network-scripts]# diff -i ifcfg-eth3 ifcfg-eth2
1,2c1,2
< # Advanced Micro Devices, Inc. [AMD] 79c970 [PCnet32 LANCE]
< DEVICE=eth3
---
> # Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
> DEVICE=eth2
3a4
> HWADDR=00:0C:29:15:8F:06 =>作为增加的一行 =>Beyond compare 的比较结果,更舒服一些
5c6
< HWADDR=00:0c:29:15:8f:24
---
> HOTPLUG=no
[root@node1 network-scripts]#
FQ-创建自由网络-开发者必备(请遵守国家法律)
最简单的当然购买账号,直接用客户端进行登陆,不需要自己任何设置,也不需要购买海外服务器.
推荐:http://v.uuu.net/ (=>个人使用下来比较方便,网速也不错)
注册,购买,下载客户端,连接即可,每次登陆还免费赠送1个小时.
ubuntu系统,使用系统自带的vpn客户端,配置好账号连接即可.
其他方法,可以申请一台海外的VPS搭建VPN服务器,或者用nginx搭建反向代理服务器,还可以用ssh服务进行代理。
##ssh服务进行代理-ssh隧道加密技术
=>ssh隧道的基本理论
客户端(本机)与服务器的22号端口建立ssh连接以后,客户端的请求数据通过ssh隧道加密发送到服务器,然后再通过ssh服务器的80端口去访问网络数据.
实现穿墙并且访问google等被墙,但是对开发者来说又特别重要的网站.
ssh服务器必须能够被连接,必须提供ssh隧道功能,必须能够访问墙外的网络.
我们找到了一个同时满足上面三点要求的SSH服务器提供商,而且是免费的。就是www.cjb.net.(速度比较慢,免费啊,可以自己购买一台)
客户端不直接跟服务器的80端口建立一个连接通道,反而是和服务器的22端口建立一个连接通道,但是在这个22端口的连接通道中,建立一个子连接通道,
这个子连接通道是用来访问服务器的80端口。也就是说,在22号端口上建立的连接,传输的数据不是22号端口本来的数据,而是与服务器的80端口通信的一整条的连接通道
22号端口和80号端口都是属于同一个服务器的,实际上SSH隧道功能里面,我们的目的端口(此处是80端口)完全可以跟22号端口不是属于同一个主机,这意味着什么呢?
这意味着,我们能通过连接主机A的22号端口,所实现的功能是访问另外一台主机B的80端口!!这是什么?这不就是相当于把A主机当作代理服务器么???很明显了吧。
=>购买海外主机:
推荐AWS的云服务器,注册,可以申请免费使用一年.
尽量选择日本,韩国或者新加坡的主机,美国主机速度可能比较慢.
=>windows平台设置ssh隧道
在本地机器上开启ssh服务.
windows使用ssh客户端,xshell,putty等设置ssh转发服务,并且配置好端口.
建立到代理服务器的ssh隧道.
=>浏览器插件设置
在浏览器中安装插件,例如chrome安装switchy sharp
配置switchy sharp
IP就是127.0.0.1了,端口就是自己设置的端口,协议选socks5.
完成以上步骤后,就可以使用浏览器访问google了.
=>ubuntu系统(基于命令行操作)设置ssh隧道
如果是命令行界面的,因为没有可视化的代理插件,需要安装命令行的代理工具:
1.sudo apt-get install tsocks python-pip
修改/etc/tsocks.conf server = 127.0.0.1 端口可以不修改,用1080就好。
2.sudo pip install gevent m2crypto shadowsocks
然后命令行运行:
ssh -qTNf -D 127.0.0.1:1080 ubuntu@55.68.27.121
因为tsocks的默认端口就是1080,55.68.27.121就是我的亚马逊云主机.
每一个需要FQ的命令行前加tsocks就可以了, 比如要下载代码tsocks git clone ssh://hzxww@review.openstack.org:29418/openstack-dev/devstack,就可以下载了。
tsocks会将这个请求转发给本地127.0.0.1:1080端口,然而我们对这个端口做了转发,转发到55.68.27.121上去了,所以这个下载代码请求变成远程亚马逊主机的请求了,它会去请求,
然后接受到的数据转发回来,当然,它自己不会保存数据,不用担心代理服务器会满掉。
服务器端: 只要运行sshd就可以了,不需要特别的设置。
客户端:
- ssh -fND localhost:{port} {uname}@{server-addr},这条命令让ssh监听localhost上的{port}端口,并把收到的访问请求转发给{server-addr}
- curl -v --socks5 localhost:{port} "http://www.baidu.com",注意用ssh搭建的代理是socks代理,不是http代理。如果尝试用http代理的方式使用ssh搭建的代理,保证会让你很郁闷!
也可以在Firefox里面使用socks代理。
方法很简单,几行命令搞定。主要原理就是在你的VPS上建一个受限的VPS用户,此用户仅作SSH上网用,对ROOT账户或安装的VPN没有丝毫影响。
添加账号方法
1、Putty登录 VPS
输入以下命令:
SSH root@123.123.123.123
记得将 123.123.123.123″ 替换成你VPS的IP地址。
2、创建一个用户组
输入以下命令:
groupadd username
你可以将 username 替换成任意你容易记住名字。
3、创建受限用户
输入以下命令:
useradd -d /home/username -m -g username -s /bin/false username
4、为新用户设置密码
输入以下命令:
passwd username
回车,输入密码,回车,再输入一次密码,回车。
http://www.vpnsshproxy.com/cesu/
http://blog.chinaunix.net/uid-23823046-id-2657006.html =>公司临时用一下,速度慢
http://www.uudaili.org/index.html
http://www.freehao123.com/amazon-aws/
https://aws.amazon.com/cn/free/
shutdown关机操作
shutdown是通过init 0来执行关机动作的,正式关机前会做一些清理的工作.
halt最开始的机器上只关闭系统,但是不关闭电源,但是拥有ACPI以后,halt也会关闭电源
poweroff关闭系统以后,给ACPI发送一个关闭电源的命令.
shutdown –h now 关机并且关闭电源
shutdown –r now
chkconfig –add 给当前运行级别,添加开机自启动的服务.
end
常用linux命令和配置的更多相关文章
- VM虚拟机安装 常用Linux命令 网卡配置 (第二天)
VM虚拟机安装:(昨天已经安装好了VM了,按照提示安装就好,很简单) 1.安装centos7虚拟机,现在磁盘里面新建文件夹作为安装文件夹 2.找到centos7的iso文件,打开vm-新建虚拟机-按照 ...
- 常用Linux命令小结
常用Linux命令小结 Linux下有很多常用的很有用的命令,这种命令用的多了就熟了,对于我来说,如果长时间没有用的话,就容易忘记.当然,可以到时候用man命令查看帮助,但是,到时候查找的话未免有些临 ...
- 77个常用Linux命令和工具
77个常用Linux命令和工具 Linux管理员不能单靠GUI图形界面吃饭.这就是我们编辑这篇最实用Linux命令手册的原因.这个指南是特别为Linux管理员和系统管理员 设计的,汇集了最有用的一些工 ...
- 常用Linux命令笔记
任何脱离业务的架构都是耍流氓 只记录实际常用的Linux命令 常用Linux命令 查找安装路径: whereis nginx 查询nginx进程: ps aux|grep nginx 查看 CentO ...
- 工作中常用Linux命令--服务器运维
工作中常用Linux命令--服务器运维 lsof查看端口使用情况 lsof -i:8080更多lsof命令使用说明:http://www.cnblogs.com/peida/archive/2013/ ...
- Linux就该这样学--之常用linux命令及bash基础
Linux就该这样学--之常用linux命令及bash基础 Linux命令 管道 重定向 环境变量 常用命令 常用系统工作命令 系统状态检测命令 工作目录切换命令 文本文件编辑命令 文件目录管理命令 ...
- 十五个最常用Linux命令行 - imsoft.cnblogs
众多Linux管理员在使用Linux的时候会经常使用到很多Linux命令行,其中有绝大部分不是经常使用到的.在本文中主要为大家总结了经常使用的十五个最常用Linux命令行,希望对刚刚接触Linux命令 ...
- 常用 Linux 命令的基本使用
常用 Linux 命令的基本使用 操作系统 作用:管理好硬件设备,让软件可以和硬件发生交互类型 桌面操作系统 Windows macos linux 服务器操作系统 linux Windows ser ...
- 【Linux基础】常用Linux命令: cd, cp, ls, mkdir, mv, rm, su, uname
常用Linux命令:cd, cp, ls, mkdir, mv, rm, su, uname cd命令:切换当前工作目录至 dirName(目录参数) 其中 dirName 可为绝对路径或相对路径.若 ...
随机推荐
- Sass占位符选择器`%`
摘录自Understanding placeholder selectors. @extend @extend让你能够在多个选择器中通过继承的方式共享一段样式: .icon { transition: ...
- MySQL的SQL_CALC_FOUND_ROWS
分页程序一般由两条SQL组成: SELECT COUNT(*) FROM ... WHERE .... SELECT ... FROM ... WHERE LIMIT ... 如果使用SQL_CALC ...
- ruby 模块 的引入
module My NA="China" def My.set_name(name) @name=name end def My.get_name return @name end ...
- BZOJ_1009_[HNOI2008]_GT考试_(动态规划+kmp+矩阵乘法优化+快速幂)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1009 字符串全部由0~9组成,给出一个串s,求一个长度为n的串,不包含s的种类有多少. 分析 ...
- 对easyUI中课堂源码编辑改进建议
在孙宇老师讲得Easyui第10讲完后,基本的增删该查做出来了,但是编辑存在一个问题:行内样式编辑修改,如果当用户没有修改数据,孙宇老师讲得时候直接return,这样做是不合理的:第二次再使用右键编辑 ...
- Oracle 新增表空间文件
ALTER TABLESPACE users ADD DATAFILE 'D:/oracle/oradata/orcl/users.dbf' SIZE 500M AUTOEXTEND ON NEXT ...
- [转]ASP.NET MVC 入门9、Action Filter 与 内置的Filter实现(介绍)
有时候你想在调用action方法之前或者action方法之后处理一些逻辑,为了支持这个,ASP.NET MVC允许你创建action过滤器.Action过滤器是自定义的Attributes,用来标记添 ...
- 开始同时在cnblog和BAE上写博客
研究生第一学期已过一半,开始理论学习,当然不能忘了实践学习. \[\frac{{ - b \pm \sqrt {{b^2} - 4ac} }}{{2a}}\]
- 通过模板类简单实现Spark的JobServer
实验前后效果对比: 之前:执行13个节点,耗时16分钟 之后:同样13个节点,耗时3分钟 具体逻辑请参照代码及注释. import java.util.concurrent.{ExecutorServ ...
- 《Genesis-3D开源游戏引擎--横版格斗游戏制作教程06:技能播放的逻辑关系》
6.技能播放的逻辑关系 技能播放概述: 当完成对技能输入与检测之后,程序就该对输入在缓存器中的按键操作与程序读取的技能表信息进行匹配,根据匹配结果播放相应的连招技能. 技能播放原理: 按键缓存器中内容 ...