Linux常用命令整理

SSH与客户端保持连接不中断

如果您有多台个人管理服务器,不想在每个客户端进行设置,只需在服务器的 /etc/ssh/sshd_config 中添加如下的配置:

ClientAliveInterval 60

查看tcp连接数量以及状态

ss -s

配合

watch -n 1 -d ss -s 

可以实时显示tcp数量

检查该端口的进程号

netstat -alnp | grep 8080

每隔一秒高亮显示网络链接数的变化情况

watch -n 1 -d netstat -ant

命令解析:watch是关键字,-n 1 是1秒执行一次,-d是变化高亮, netstat -ant 是需要一秒执行一次的命令

查看内存及CPU使用情况

top

查看硬盘内存使用情况

df -h

TOMCAT查看控制台输出信息

进入tomcat/logs/文件夹下

tail -f catalina.out

MAC终端远程登录失败

只要清除老的公钥信息就可以了。

ssh-keygen -R 你远程服务器的IP

防火墙

service iptable status # 防火墙状态 
service iptables stop # 临时关闭防火墙 
chkconfig iptables off # 永久关闭防火墙

即时生效,重启后复原

开启: service iptables start 
关闭: service iptables stop

传输文件

scp /mydata/jdk-8u271-linux-x64.rpm [email protected]:/mydata

列出文件详细信息

ls -l 

列出所有文件包括隐藏

ls -a 

创建目录xxx

mkdir xxx 

切换目录到xxx

cd xxx 

创建文件xxx.txt

touch xxx.txt 

创建xxx.txt文件并向文件中写入内容text

echo "text" > xxx.txt 

查看xxx.txt内容,顺序显示

cat xxx.txt

查看xxx.txt内容,倒叙显示

tac xxx.txt 

删除xxx.txt文件

rm xxx.txt 

强制删除xxx.txt文件

rm -f xxx.txt

搜索xxx.txt文件

find xxx.txt 

精确搜索

find / -name xxx.txt 

统计文本中的行数、字数、字符数

wc xxx.txt 

在xxx.txt文件中查找text字符串

grep "text" xxx.txt 

删除空目录x,如果x不是空目录则无法删除

rmdir x 

树形结构显示目录

tree 

需要安装tree包,安装指令

sudo apt-get install tree

显示当前路径

pwd 

显示在线登录用户

who 

显示当前操作的用户

whoami 

显示主机名

hostname 

显示系统信息

uname 

动态显示当前耗费资源最多进程信息

top 

显示瞬间进程状态

ps 

查看磁盘大小 df -h 带有单位显示磁盘信息

df 

测试网络连通

ping 127.0.0.1 

清屏

clear 

对命令重命名

alias 

如:

alias showmeit=”ps -aux” 

另外解除使用

unaliax showmeit

根据id杀死进程

kill id号 

只打包不压缩

tar -cvf /home/xxx/xxx.tar /home/xxx/xxx.txt 

打包,并用gzip压缩

tar -zcvf xxx.tar.gz /home/xxx/xxx.txt 

打包,并用bzip2压缩

tar -jcvf xxx.tar.bz2 /home/xxx/xxx.txt 

解压到某处

tar -zxvf xxx.tar.gz -C /mydata

关机重启

shutdown -r 

关机不重启

shutdown -h 

立刻关机

shutdown now 

关机

halt 

重启

reboot 

注销

logout

返回上一级目录

cd .. 

复制文件file1为file2

cp file1 file2

压缩file文件为file.zip

zip file.zip file 

解压file.zip文件

unzip file.zip

系统会在8:20关机

shutdown -h 8:20 

系统会在十分钟之后关机

shutdown -h +10 

用户登录日志

last 

查看日历

cal 

从url连接下载文件

wget url 

显示日期

date 

同步写入磁盘,Linux关机之前输入

sync 

将file.zip移到xxx文件夹下

mv file.zip xxx 

切换root用户

su -

设置root密码

sudo passwd root 

查看文件内容

# 从第一个字节开始正向查看文件的内容
cat file1 
# 查看一个文件的前两行
head -2 file1 
# 查看一个长文件的内容
more file1 
# 从最后一行开始反向查看一个文件的内容
tac file1 
# 查看一个文件的最后三行
tail -3 file1 

文本处理

# 在文件 '/tmp/test' 中查找 "str"
grep str /tmp/test 
# 在文件 '/tmp/test' 中查找以 "str" 开始的行
grep ^str /tmp/test 
# 查找 '/tmp/test' 文件中所有包含数字的行(grep可匹配正则表达式)
grep [0-9] /tmp/test 
# 在目录 '/tmp' 及其子目录中查找 "str"
grep str -r /tmp/* 
# 找出两个文件的不同处
diff file1 file2 
# 以对比的方式显示两个文件的不同
sdiff file1 file2 

查找

# 从 '/' 开始进入根文件系统查找文件和目录
find / -name file1 
# 查找属于用户 'user1' 的文件和目录
find / -user user1 
# 在目录 '/ home/user1' 中查找以 '.bin' 结尾的文件
find /home/user1 -name *.bin 
# 查找在过去100天内未被使用过的执行文件
find /usr/bin -type f -atime +100 
# 查找在10天内被创建或者修改过的文件
find /usr/bin -type f -mtime -10 
# 寻找以 '.ps' 结尾的文件,先运行 'updatedb' 命令
locate *.ps 
# 在当前目录及其子目录所有.c和.h文件中查找 'expr'
find -name '*.[ch]' | xargs grep -E 'expr' 
# 在当前目录及其子目录的常规文件中查找 'expr'
find -type f -print0 | xargs -r0 grep -F 'expr' 
# 在当前目录中查找 'expr'
find -maxdepth 1 -type f | xargs grep -F 'expr' 

其他

# 切换到root权限(与su有区别)
su - 
# 关机
shutdown -h now 
# 重启
shutdown -r now 
# 罗列使用CPU资源最多的linux任务 (输入q退出)
top 
# 以树状图显示程序
pstree 
# 查看参考手册(例如ping 命令)
man ping 
# 修改密码
passwd 
# 显示磁盘的使用情况
df -h 
# 显示前一个月,当前月以及下一个月的月历
cal -3 
# 显示指定月,年的月历
cal 10 1988 
# 更新当前系统中安装的所有rpm包
yum -y update 

查看cpu的个数

# 查看系统cpu的信息
cat /proc/cpuinfo
# 其中 cpu cores 即为cpu的核数
# 也可以用以下命令直接查看
cat /proc/cpuinfo | grep "cores"|uniq  

利用vmstat命令监控cpu

vmstat 2 10 (每2秒监控一次 监控10次)

利用free指令监控内存

free -m  #查看以M为单位的内存使用情况

显示时间戳

有时候需要对 Linux 系统做审计,那为历史记录添加时间戳,显示非常有用。

export HISTTIMEFORMAT='%F %T '

history 3
  46  2021-04-18 15:21:33 curl baidu.com
  47  2021-04-18 15:21:35 pwd
  48  2021-04-18 15:21:39 history 3

可以看到,历史记录已经显示了时间戳。

其实这些对于审计需求,还不够,可以加上更详细的信息。

export HISTTIMEFORMAT="%F %T `who -u am i 2>/dev/null| awk '{print $NF}'|sed \-e 's/[()]//g'` `whoami` "
  6  2021-04-18 16:07:48 113.200.44.237 root ls
  7  2021-04-18 16:07:59 113.200.44.237 root pwd
  8  2021-04-18 16:08:14 113.200.44.237 root history

控制历史记录总数

默认情况下,Linux 系统最多存储 1000 条历史记录,可以通过 HISTSIZE 环境变量查看

$ echo $HISTSIZE
1000

对于需要做审计的场景,1000 条历史记录可能会太少了,我们可以修改为合适的值

$ export HISTSIZE=10000

注意,HISTSIZE 变量只能控制缓冲区中的历史记录数量,如果需要控制 .bash_history 文件存储的最大记录数,可以通过 HISTFILESIZE 进行控制

上述命令行修改只在当前 Shell 环境生效,如果需要永久生效,需要写入配置文件

echo "export HISTSIZE=10000" >> ~/.bash_profile
$ echo "export HISTFILESIZE=200000" >> ~/.bash_profile
$ source ~/.bash_profile

更改历史记录文件名

有时,为了方便管理和备份,需要更改历史记录文件的路径和名称。简单,同样可以通过环境变量 HISTFILE 更改它的文件名称

$ echo "export HISTFILE=/data/backup/chopin.bash_history" >> ~/.bash_profile
$ souce ~/.bash_profile

禁用历史记录

处于某种特殊环境,我们需要禁用历史记录

$ echo "export HISTSIZE=0" >> ~/.bash_profile
$ echo "export HISTFILESIZE=0" >> ~/.bash_profile
$ source ~/.bash_profile

直接把上述两个变量的值设置为 0,就实现了禁用历史记录的功能。

在命令前额外多加一个空格,这样的命令是不会被记录到历史记录的,感觉是不是很酷

这个技巧如果在你的系统不管用,请查看下环境变量 HISTCONTROL 是否包含 ignorespace,貌似 centos 系统默认没有设置这个值。

先执行

export HISTCONTROL=ignoresapce

然后再敲命令时在命令前面加一个空格。

总结 history

在 Linux 系统,history 命令可以非常方便,帮助我们管理历史命令,平时我们命令都会先记录在缓存区,在 Shell 退出时才会记录到文件中。

history 命令提供了很方便的管理功能,合理去配置和管理历史记录,可以让你的 Linux 系统更加健壮和安全。

还是来总结一下 history 命令常用方法

  • history n:只显示最近的 n 条历史记录
  • history -c:清除缓存区中的历史记录
  • history -w:将缓存区的历史记录保存到文件
  • history -d N:删除第 N 条历史记录

几种重复执行命令的方法:!!!-1!N!string

交互式历史命令搜索,请使用 Ctrl+R 快捷键

合适使用几个相关的环境变量,让你的 Linux 系统更安全:

  • HISTSIZE:控制缓冲区历史记录的最大个数
  • HISTFILESIZE:控制历史记录文件中的最大个数
  • HISTIGNORE:设置哪些命令不记录到历史记录
  • HISTTIMEFORMAT:设置历史命令显示的时间格式
  • HISTCONTROL:扩展的控制选项

如果在生产环境,这些环境变量需要持久化到配置文件 ~/.bash_profile

export HISTCONTROL=ignoreboth
# ignorespace: 忽略空格开头的命令
# ignoredups: 忽略连续重复命令
# ignoreboth: 表示上述两个参数都设置

# 设置追加而不是覆盖
shopt -s histappend

export HISTSIZE=1000
export HISTFILESIZE=200000
export HISTTIMEFORMAT="%F %T "
export HISTIGNORE="ls:history"

你可能感兴趣的:(linux,shell)