一:修改时区:
1、修改 /etc/sysconfig/clock ZONE=Asia/Shanghai
echo "ZONE=Asia/Shanghai" >/etc/sysconfig/clock
2、rm /etc/localtime
3、链接到上海时区文件
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
执行完上述过程后,重启机器,即可看到时区已经更改。
4、重启机器reboot
5、再次登录主机,date查看时区都已经变更为CST
二:常用命令
1、像表格一样输出:
mount |column -t -s :
2、cat /etc/passwd |column -t -s : 是以:为分隔符,整齐的打印出这一列;像excel表格一样
3、watch df -h 可以定时监控一些命令;
可以用其他使用 tr 命令的代替任何字符,非常方便: cat geeks.txt | tr ‘:[space]:’ ‘\t’ > out.txt
4、自动回答任何命令yes or no:可以用yes命令: yes | apt-get update
5、指定size创建文件,写的内容都是0:
dd if=/dev/zero of=out.txt bs=1M count=10 指定生成一个大小为bs*count的文件;
把硬盘填满的命令:dd if=/dev/zero of=/tmp/file bs=1G count=10
(dd命令,就是实现转化、拷贝文件功能)
把文件置为空:
cat /dev/null > /var/log/messages 效果等同于 “: > /var/log/messages”
下面两者操作得不到任何信息,相当于把内容扔到了“黑洞”里:
cat $filename >/dev/null
cat $filename 1>/dev/null
不想看任何输出,只想看到这条命令运行是不是正常,那么我们可以同时禁止标准输出和标准错误的输出:
cat $filename 2>/dev/null /dev/null
6、把文件中小写转换为大写:
cat text | tr a-z A-Z > 0605.txt
或者把大写转换为小写:cat text | tr A-Z a-z > 0605.txt
7、查看隐藏文件
ll -a
显示当前目录所有文件、文件夹的详细信息,包括权限、大小、用户、组等
ls -a
显示当前目录下所有文件、文件夹的简略信息,只有文件(夹)的名称,以"."开头的都是隐藏文件。
l.(这是个命令别名,实际命令为ls -d .* --color=auto)
显示当前目录下的所有隐藏文件,只显示名称,不显示详情
8、命令date的多个用法
date使用方法总结:
命令 执行结果
展示格式:
date '+%Y-%m-%d %H:%M:%S' 2019-11-26 14:12:58
date '+%Y-%m-%d %H:%M:%S' 2019-12-06 14:21:04
date -d '时间' '+%Y-%m-%d %H:%M:%S' 其中时间:可以是day及其复数、minute、minutes、today、tomorrow、month、year
date -d 'tomorrow' '+%Y-%m-%d %H:%M:%S' 明天
date -d 'tomorrow' '+%Y-%m-%d %H:%M:%S' 2019-11-27 14:11:55
date -d '1 days' '+%Y-%m-%d %H:%M:%S' 2019-11-27 14:12:05
date -d '+1 days' '+%Y-%m-%d %H:%M:%S' 2019-11-27 14:12:16
date -d '-1 days' '+%Y-%m-%d %H:%M:%S' 2019-11-25 14:12:20
date -d 'yesterday' '+%Y-%m-%d %H:%M:%S' 2019-11-25 14:12:29
date -d '2 hours' '+%Y-%m-%d %H:%M:%S' 2019-11-26 16:13:35 2小时后
date -d '31days' '+%Y-%m-%d %H:%M:%S' 2020-01-06 15:27:29 31天后
date -d '1month' '+%Y-%m-%d %H:%M:%S' 2020-01-06 15:28:41 1个月后
date -d '1year' '+%Y-%m-%d %H:%M:%S' 2020-12-06 15:29:01 1年后
date -d '1 minute' '+%Y-%m-%d %H:%M:%S' 2019-11-26 14:17:43 1分钟后
date -d '2 minutes' '+%Y-%m-%d %H:%M:%S' 2019-11-26 14:19:00 2分钟后
变量取日期:
aaa= date '+%Y%m%d'
9、curl 命令
curl "http://www.baidu.com" 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地
curl -i "http://www.baidu.com" 显示全部信息
curl -I "http://www.baidu.com" 只显示头部信息
curl -v "http://www.baidu.com" 显示get请求全过程解析
wget "http://www.baidu.com"
curl命令模拟Get请求携带参数(linux):
curl -v http://127.0.0.1:80/xcloud/test?version=1&client_version=1.1.0&seq=1001&host=aaa.com
上述命令在linux系统,get请求携带的参数只到version=1,”&”符号在linux系统中为后台运行的操作符,此处需要使用反斜杠”\”转义,即:
curl -v http://127.0.0.1:80/xcloud/test?version=1\&client_version=1.1.0\&seq=1001\&host=aaa.com
或者
curl -v "http://127.0.0.1:80/xcloud/test?version=1&client_version=1.1.0&seq=1001&host=aaa.com"
Post请求
1、使用curl命令,通过-d参数,把访问参数放在里面,如果没有参数,则不需要-d,
curl -d "username=user1&password=123" "www.test.com/login"
2、使用wget命令
wget –post-data 'username=user1&password=123' http://www.baidu.com
3、发送格式化json请求
curl -i -k -H "Content-type: application/json" -X POST -d '{"version":"6.6.0", "from":"mu", "product_version":"1.1.1.0"}' https://10.10.10.10:80/test
curl和wget区别
curl模拟的访问请求一般直接在控制台显示,而wget则把结果保存为一个文件。如果结果内容比较少,需要直接看到结果可以考虑使用curl进行模拟请求,如果返回结果比较多,则可考虑wget进行模拟请求。
10、文件上传到linux中,需要做的变更:
问题:windows中写的脚本换行符号是\t\n,但是在linux中的换行符是\n,怎么实现转换呢?
1、dos2unix 文件名
2、sed -i ‘s/^M//g‘ 文件名
3、vim编辑文件后输入:1,$s/^M//g
11、crontab定时:
格式是:
分 时 日前 月 星期 执行的命令
执行的命令里的脚本,建议增加对环境变量的加载,脚本中前几行建议加上下面的语句:
[ -F /etc/profile] && source /etc/profile
[ -F $home/.bashrc/profile ] && source $home/.bashrc/profile
12、shell中,判断变量和数值是否相等
if [ $pid_cnts -eq 0 ];
三:关于ntp同步时间
增加了crontab任务后,在/var/spool/cron目录下会有一个当前登录账号命名的文件。比如我的登录账号是root。则会存在一个root文件。该文件的内容就是刚添加的crontab任务。
/var/spool/cron/root中删除对应的信息就好;
/etc/crontab和/var/spool/cron/root文件有什么不同呢?
linux /etc/crontab 和 /var/spool/cron区别
1./var/spool/cron/这个目录是以账号来区分每个用户自己的执行计划
-rw-------. /var/spool/cron/root
-rw-------. /var/spool/cron/user1
-rw-------. /var/spool/cron/user2
格式:
*/1 * * * * ls />>/opt/crontab-e 2>&1
2./etc/crontab系统执行计划,需要在五个*后面加上用户
格式:
*/1 * * * * root ls />>/opt/crontab-e 2>&1
3.服务重启
3.1 /etc/init.d/crond restart
3.2 service crond restart
四、关于ssh无密码设置、给用户添加sudo权限、开放22端口
1、主机内可以ssh无密码登录常见登录验证方式如下:
更改文件:/etc/ssh/sshd_config中下面的参数:
Passwordauthentication yes //启用密码验证
Pubkeyauthentication yes //启用秘钥验证
Authorsizedkeysfile .ssh/authorized_keys //指定公钥数据库文件
在集群每台服务器上执行
cd .ssh/
ssh-keygen -t rsa 生成私钥和公钥
然后把生成的公钥 id_rsa.pub都拷贝到其他机器的authorized_keys中,其他机器的公钥也要拷贝到本台机器的authorized_keys中;
cat id_rsa.pub >authorized_keys
chmod 600 authorized_keys
对于安全加固的环境,端口不是22,则登录时,指定端口登录即可:
ssh -p22022 dcp27
跟防火墙没有关系;
遇到 的问题及解决:自己的公钥在两台主机上都已经写入到authorized_keys文件中了,但是dcp187连接dcp14时,有报错信息:
部件之间ssh无密码登录:
[root@iii187 .ssh]# ssh 10.1.222.14
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
48:5c:1c:d6:c4:79:86:98:87:cb:dd:a2:cd:2c:4f:cc.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:10
ECDSA host key for 10.1.222.14 has changed and you have requested strict checking.
Host key verification failed.
[root@dcp187 .ssh]#
定位原因:
/root/.ssh/known_hosts文件中,14的RSA key不对:10.1.245.14 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHeEdA48MohIFDoShjnTY3Icqq75EFO8Vie/RbldZCloDzZ3YnbdpOZZ4fpegy63sHo3FJs1/O/Rftc+6t6+/c0=
解决方案:
更改为正确的即可:
10.1.245.14 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIx0lJ1n5m35qfllgxfEASOebz0wiccplXuhlrBYjvhvaIg27Up3bzkqDK209MekAFxoDUZJ6cmQWMbQc571c2U=
根因:ssh默认会把你每个你访问过计算机的公钥(public key)都记录在/root/.ssh/known_hosts。当再次访问该主机时,OpenSSH会校对公钥。如果公钥不同,OpenSSH则发出警告, 避免你受到DNS Hijack之类的攻击。
解决办法:
1、手动删除/root/.ssh/known_hosts文件,放心在你再次使用ssh时它会再次自动生成。但这样也会把其他主机的公钥删掉,下次登录需要重新输入密码,如果你有足够的耐心,也可以打开/root/.ssh/known_hosts文件,找到对应主机那一行手动修改为正确的RSA key
问题二:
问题描述: [root@DCP185 .ssh]# ssh 10.1.235.187
ssh_exchange_identification: read: Connection reset by peer
http://www.cnblogs.com/starof/p/4709805.html
vi /etc/hosts.allow文件加上一行sshd: ALL。
然后重启ssh。
#service sshd restart
如果不行,/root/.ssh/known_hosts文件中,查看对方机器的rsa码是否为最新的,如果还是不行,查看下对方机器是否又断网现象
2、开放22端口,使得用户可以直接登录环境
/etc/ssh/sshd_config中:
放开Port 22;
把 PermitRootLogin no更改为yes;
yum install openssh-server :安装openssh客户端;
chkconfig sshd on 或者systemctl enable sshd.service :sshd服务开机启动;
service sshd restart :启动sshd服务:
chkconfig iptables off 或者systemctl disable iptables.service关闭防火墙:
3、给普通用户增加sudo权限:
/etc/sudoers中新增:
在## Allow root to run any commands anywhere下添加:
ips ALL=(ALL) ALL: ALL
在# %wheel ALL=(ALL) NOPASSWD: ALL下添加:
ips ALL=(ALL) NOPASSWD: ALL (普通用户执行命令时不需要输入密码)
使用ansible调用命令,会校验ssh密码,不校验ssh互信,改下面的配置:
/etc/ansible/ansible.cfg文件中:host_key_checking = False该配置项放开;
如果不添加第二个,导致ansible在连接时,会报错:
[root@ips106 logs]# ansible root10.1.235.72 -m shell -a 'hostname'
root10.1.235.72 | FAILED | rc=0 >>
MODULE FAILURE
配置后,连接信息如下:
[root@ips106 logs]# ansible root10.1.235.72 -m shell -a 'hostname'
root10.1.235.72 | SUCCESS | rc=0 >>
host-10-1-235-72
4、“重装后的server,去安全加固,在其他机器上可以用root登录 ”的方法:
可以严格按照去安全加固的方法操作(参考10.1.235.75、76),也可以用最简单的方法:
1、/usr/lib/systemd/system/sshd.service
禁掉下面的行:ExecStart=/usr/local/openssh-7.4p1/sbin/sshd-D $OPTIONS
放开上面的行:ExecStart=/usr/sbin/sshd-D $OPTIONS
2、/etc/ssh/sshd_config文件中:放开22端口,开启root访问权限:
PermitRootLogin yes这行放开就好;
3、停掉防火墙
reboot后,
其他ssh:connect to host 10.1.245.106 port 22: No route to host
/etc/ssh/sshd_config问价那种22和22022的端口都已经放开了,为什么还会报这个错呢?
原因是:被访问主机开启了防火墙,将防火墙停掉后,就可以了:
查看防护墙状态
service iptables status
关闭
service iptables stop
查看防火墙开机启动状态
chkconfig iptables --list
关闭开机启动
chkconfig iptables off
scp中携带机器的密码:
五:关于机器之间文件拷贝:
除了设置SSH无密码登录的方法外,可使用下面的命令:sshpass -p 密码 scp -P 端口 源文件 目的文件
拷贝一个文件:
把文件a从机器A的/AAA目录拷贝到机器B的/BBB上,机器B(10.1.1.1)的密码是secret,B的端口是22,如果是22022,再进行更改即可
sshpass -p secret scp -P 22 /AAA/a 10.1.1.1:/BBB
把文件夹a从机器A的/AAA目录拷贝到机器B的/BBB上,机器B的密码是secret,B的端口是22,如果是22022,再进行更改即可
sshpass -p secret scp -P 22 -r /AAA/a 10.1.1.1:/BBB ---成功
把文件夹a从机器A的/AAA目录拷贝到机器B的/BBB上,并更改文件夹的名称为b,机器B的密码是secret,B的端口是22,如果是22022,再进行更改即可
sshpass -p secret scp -P 22 -r /AAA/a 10.1.1.1:/BBB/b
六:工具类:xshell若出现“继续使用此程序,你必须应用最新的版本”的错误解决方法:
资源可以用,但是安装完成后启动会报错:“要继续使用此程序,您必须应用最新的更新或使用新版本” 解决办法先修改你电脑时间为前一年(2017 1月),然后就可以打开xshell了,打开后"工具"->选项->更新->取消前面的更新即可 ----没有找到取消前面的更新部分,
倒是更改了时间到2017年1月后,能打开xshell,即使把时间改回来,不关闭xshell还是能使用的;但是重新打开还是不能使用;
六:关于java遇到问题定位
查看下jar包运行是否出错:
java -jar **.jar
打包命令:mvn clean package;可以在代码下载到本地后,在cmd对话框中操作;也可以在linux server上操作;