分享日常运维需要的 LINUX 命令, 归纳整理容易记忆理解

好兄弟家族添丁, 郝慕白

linux已知命令都是第一个参数为源文件,第二个参数为目标文件

sshpass 可以为后面的 shell 提供密码服务

$ sshpass -p xxxx ssh root@xx.xx.xx.xx "mv -f /usr/share/gomyck/xx/xx.jar /usr/share/gomyck/xx/backup/xx.jar.`date "+%Y-%m-%d-%l-%M-%s"`"
$ sshpass -p xxxx scp /usr/share/gomyck/xx/xx.jar  root@xx.xx.xx.xx:/usr/share/gomyck/xx/

用户操作

#添加用户
$ useradd gomyck -g gomyck -s  /bin/bash -d /home/gomyck   
#修改用户信息
$ usermod -s  .. gomyck   
#修改密码
$ passwd gomyck  

查看系统内核信息

$ lsb_release -a  
$ cat /etc/redhat-release 

查看IP经过的路由节点

# traceroute www.baidu.com
$ traceroute [IP][HOST] 

切换当前命令行权限为ROOT

$ sudo -i  

查看当前文件inode信息

stat [file]   

硬盘信息查看

$ df -hl  #查看当前可用硬盘空间
$ du -Sh  #查看所有文件的大小   
$ du -sh  #查看当前文件大小      
$ du -sh /usr #查看usr文件夹的大小

修改密码

passwd [用户id]   

查看ip地址

$ ip addr
$ ifconfig

不挂起命令: nohup no hang up

$ nohup [command]

后台执行命令: 防止当前shell占用控制台桌面

$ [command]  &

nohup & 组合使用:

nohup [command] > gomyck.log 2>&1 & 把当前进程不挂起后台执行, 且把控制台打印的日志输出到gomyck.log中

2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。最后一个& , 是让该命令在后台执行。

命令帮助

$ whatis  [command]    # 显示命令简要信息
$ info    [command]    # 显示命令的详细信息
$ man     [command]    # 显示命令的说明文档
$ which   [command]    # 查看命令所在目录
$ whereis [command]    # 查看命令引用的目录(这个命令适用于安装了多个版本, 确定当前使用的是哪个目录下的命令)

设置环境变量

$ vim /etc/profile 
$ ~/.profile 
$ ~/.bashrc       
$ /.bash_profile  #用户环境变量
$ ~/.zshrc        #zsh
# 在上述文件中,
# XXX_HOME=/User/xxx/vvv
# export PATH={XXX_HOME}/bin:$PATH

清理内存

$ echo 1 > /proc/sys/vm/drop_caches

查看进程对应的端口号

$ netstat -nap | grep pid

占用端口的进程信息

$ lsof -i:port  

查看该进程下的线程

$ ps -T -p pid

alias

$ cd /etc
$ vim profile
$ alias tom1='cd /usr/share/my-tomcat-one'
$ source profile
$ alias tom1

telnet

$ telnet ip port  
$ ctrl+]  #进入telnet   
$ quit enter #回车 退出telnet

systemctl

# systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。
$ systemctl start xxx 可以启动服务  

curl

$ curl -R -0 "www.baidu.com"            # 访问baidu
$ curl -O xxx.rar www.xxx.com/aa.tar    # 下载

linux欢迎界面显示信息

$ vim /etc/motd文件

创建快捷方式

$ ln -s 源文件 现有文件
# exp:ln -s /user/bin/qq.exe ./qq

测试远程端口开放

$ nc -vv 47.93.89.154 1099

查找符合条件字符串的上下3行

grep -C 3 '140.205.201.41' catalina.out

查找文件 find

$ find / -name xxx 

文件夹

-   #上次访问的文件夹
#exp: cd - 访问上次cd的文件夹

~   #代表当前用户文件夾
#exp: cd ~/.ssh  就是进入当前用户下的.ssh文件夹
#其目录在/home/{user}

zip unzip

# 压缩并指定目录
$ zip -r /home/kms/kms.zip /home/kms/server/kms
# 解压并指定目录
$ unzip /home/kms/kms.zip -d /home/kms/server/kms

查看cpu信息

$ lscpu

free

命令:-m 查看[以MB为单位]内存信息

关机

$ shutdown
# exp:
# shutdowx -h now   立即关机
# shutdowx +5    5分钟之后关机
# shutdowx 10:30    10:30关机****

cat 合并文件&查看文件

$ cat xxx.txt >> vvv.txt          #(把xxx这个文件合并到vvv文件之后)
$ cat xxx.txt  vvv.txt >zzz.txt   #(把xxx与vvv合并成新的文件zzz)

mv 移动&修改名字命令

$ mv xxx.txt ../      #把xxx.txt  移动到上一级
$ mv xxx.txt zzz.txt  #把xxx.txt  重命名为  zzz.txt

其他常用命令

$ pwd       #显示当前目录
$ find      #搜索
$ who       #当前登陆者:所有人  查看登录日志 who /var/log/wtmp
$ whoami    #当前登陆者信息
$ hostname  #主机名
$ uname -a  #系统信息
$ ifconfig  #网络情况
$ unaliax   #解除别名

打包压缩

tar   
参数:   
-c 归档文件  -x 解档文件   
-z gzip压缩  -j  bzip2压缩    
-v 显示过程  -f 使用归档名  
$ tar -cvf /home/xxx.tar /usr/aaa.txt  #把usr目录下的aaa.txt压缩成xxx.tar并放到home文件夹下

远程拷贝命令

$ scp ../xxx.jar root@11.11.11.11:/usr/share/xxxxx
# (注意:最后的文件夹结尾不要加/ 否则会把当前文件当作文件夹拷贝过去)
$ scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 [...] [[user@]host2:]file2
scp命令的参数说明:
-1 强制scp命令使用协议ssh1
-2 强制scp命令使用协议ssh2
-4 强制scp命令只使用IPv4寻址
-6 强制scp命令只使用IPv6寻址
-B 使用批处理模式(传输过程中不询问传输口令或短语)
-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p 保留原文件的修改时间,访问时间和访问权限。
-q 不显示传输进度条。
-r 递归复制整个目录。
-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port 注意是大写的P, port是指定数据传输用到的端口号
-S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

用户及用户组管理

$ /etc/passwd    #存储用户账号
$ /etc/group     #存储组账号
$ /etc/shadow    #存储用户账号的密码
$ /etc/gshadow   #存储用户组账号的密码
$ useradd        #用户名
$ userdel 	     #用户名
$ adduser	     #用户名
$ groupadd 	     #组名
$ groupdel 	     #组名
$ passwd root    #给root设置密码
$ su root        #切换用户到 root
$ su - root      #shell 环境和用户都切换到 root
$ /etc/profile   #系统环境变量
$ bash_profile   #用户环境变量
$ .bashrc        #用户环境变量
$ su user        #切换用户,加载配置文件.bashrc
$ su - user      #切换用户,加载配置文件/etc/profile ,加载bash_profile

# 更改文件的用户及用户组
$ sudo chown [-R] owner[:group] {File|Directory}  
# 例如:还以jdk-7u21-linux-i586.tar.gz为例。属于用户hadoop,组hadoop 要想切换此文件所属的用户及组。可以使用命令。
$ sudo chown root:root jdk-7u21-linux-i586.tar.gz
文件权限管理
三种基本权限
R  读        数值表示为4
W  写        数值表示为2
X  可执行     数值表示为1

image

如图所示,jdk-7u21-linux-i586.tar.gz 文件的权限为-rw-rw-r--

-rw-rw-r--一共十个字符,分成四段
第一个字符“-”表示普通文件;这个位置还可能会出现“l”链接;“d”表示目录

第二三四个字符“rw-”表示当前所属用户的权限。 所以用数值表示为4+2=6

第五六七个字符“rw-”表示当前所属组的权限。   所以用数值表示为4+2=6

第八九十个字符“r--”表示其他用户权限。      所以用数值表示为2

所以操作此文件的权限用数值表示为662

更改权限

$ sudo chmod [u所属用户  g所属组  o其他用户  a所有用户]  [+增加权限  -减少权限]  [r  w  x]   目录名

例如:有一个文件filename,权限为“-rw-r—-x” ,将权限值改为”-rwxrw-r-x”,用数值表示为765

$ sudo chmod u+x g+w o+r  filename
#上面的例子可以用数值表示
$ sudo chmod 765 filename

相关文章:
⤧  上一篇 Linux command archived i ⤧  下一篇 Spring Cache 底层代码剖析