linux常用简单操作及命令整理

一:修改时区:

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上操作;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值