shell点滴

@shell点滴

1、
linux操作系统加固后root用户无法登陆解决方案如下
cd /etc/ssh
vi sshd_config
修改Permitrootlogin=yes;
/etc/init.d/sshd restart

2、
远程复制文件:
@1、scp root@11.12.13.136:/home/file /home/software [复制file到本地/home/software目录下]
加参数-r 可以复制整个目录以及目录下的所有文件
scp -r root@11.12.13.136:/home/* /home/software 
@2、也可以反过来讲本地的文件复制到远程机器上
scp -r /home/* root@IP:/data/

3、
验证定时任务的方法:
@1、先进入crontab -e查看定时任务
@2、修改执行定时任务的时间跟当前服务器的时间接近
@3、然后查看定时脚本执行的结果
举例:
30 1 * * *(30表示分钟,1表示小时,* * * 从左到右依次表示日、月、周)
即从右往左依次是:周、月、日、时、分;*代表每周、每月、每日、每时、每分;*/2代表每2分钟,每2周,每2月,每2小时等

4、
当原压缩包被压缩成了2个压缩包,需要重新解压成一个压缩包,可直接全选中两个压缩包右键选择解压到目录

5、
设置xshell保持长连接:
ssh保持长连接:
三种方法:
(1)、修改server端/etc/ssh/sshd_config {此方法适用linux发行版的Openssh}
ClienAliveInteval 60  {表示server每隔60秒发送一次请求给client,然后client响应从而保持长连接}
ClienAliveCountMax 3  {表示server发出请求后,客户端没有响应的次数达到3次,就自动断开连接,正常情况下client不会不响应}
systemctl reload sshd

(2)、修改client端/etc/ssh/sshd_config
ServerAliveInterval 60  {表示client每隔60秒发送一次请求给server,然后server响应,从而保持连接}
ServerAliveCountMax 3   {表示client发出请求后,服务器端没有响应的次数达到3次,就自动断开连接,正常情况下,server不会不响应}

(3)、在命令参数里加上ssh -o ServerAliveInterval 60 IP 
这样子只会在需要的连接中保持长连接,并不是所有的连接都要保持长连接
重启ssh服务:/etc/init.d/ssh restart [centos的系统重启:service sshd restart]

6、
启动关闭linux的ping服务:
查看文件/proc/sys/net/ipv4/icmp_echo_ignore_all;值为0表示ping服务启动正常;值为1表示ping服务关闭
echo "0" >/proc/sys/net/ipv4/icmp_echo_ignore_all
echo "1" >/proc/sys/net/ipv4/icmp_echo_ignore_all

7、
touch * 可以更改目录下所有文件的系统时间为当前时间

8、
linux操作系统加固后管理版登录后台提示:Model is unknown
xshell登录后台,vi /etc/pam.d/login
session required /lib/security/pam_limit.so  修改为:session required pam_limit.so

9、
关闭启动网卡:
ifconfig eth1 down
ifconfig eth1 up

10、
释放内存:sync;sync;sync;echo 3 > /proc/sys/vm/drop_caches
查询用户UID:cat /etc/passwd | grep username

11、
shell脚本的调试:sh [参数]  script.sh
参数:
-x  启用调试
-v  打印脚本的详细信息即把脚本里的内容也打印出来
-e  如果一个命令失败就立即退出
-n  读入命令但是不执行他们
-u  置换时把未设置的变量看作出错

12、
uniq命令
查询重复行或列
cat file|uniq -c  【统计重复的次数】
cat file|uniq -d  【显示重复的行】
cat file|uniq -u  【显示不重复的行】

13、
当在shell脚本里,shell命令提示找不到时,多半是因为命令不能定位到/bin/command目录下:
解决方法:
1、命令改写成/bin/cp 形式;
2、编辑.bash_profile文件,配置PATH环境变量增加:/bin,source .bash_profile生效

14、
模拟服务器的网络波动,可编写脚本执行重启网络服务的动作
注:不能手动自己执行,因为手动stop之后服务器就断网了xshell就无法再连接
对于centos:
#!/bin/bash
systemctl stop network
sleep 10
systemctl start network

15、
shell的前台和后台
jobs    查看后台的进程,
ctrl+z  将前段的程序调到后台,
fg %n   将后台的第n个进程调到控制台

16、
shell命令read
语法:read [-pt] var
-p      		 后面接提示语句
-t       		 后面接等待的秒数
read aset        由控制台输入内容,该内容保存至变量aset】
read -t 30 aset  在控制台提示使用者30秒内要输入内容】

17、
ethtool                       【获取以太网的配置信息】
ethtool   网卡名 | grep Speed 【获取该网卡的网速】

18、
反向重定向,多用于while循环中
while read line
do
command
done < file
【读取file文件里的每一行写入line变量,然后循环变量file的每一行内容】
19、
自己用户下的环境变量配置;若要使用自己用户下的jdk环境变量,将java的家目录放在$PATH的前面:
JAVA_HOME=/usr/java/jdk1.8.0_15
PATH=$JAVA_HOME/bin:$PATH
export $PATH

20、
tee命令
date | tee file     【date的输出到控制台且覆盖方式记录到file文件】
date | tee -a file  【date的输出到控制台且追加方式记录到file文件】

21、
对输入的参数$1、$2...进行修饰变动
var=${1//,/  }      【对输入的第一个参数$1中的逗号替换为空格】
var=${2//,/#}       【对第二个参数的逗号替换为#号,第一个斜线代表第几个参数,后两个斜线代表替换的字符】
var=(${1//,/  })    【当用()小括号括起来,var就变成一个数组list】

举例:
#!/bin/bash
var=${1//,/  }
var2=(${1//,/  })
echo $var
for i in ${var2[@]}  【遍历数组var2的参数】
do
    echo $i
done
ehco ${#var2[@]}     【求数组var2的参数个数】

执行脚本:sh test.sh ab,cd
ab cd     【echo $var】
ab
cd        【echo $i】
2         【ehco ${#var2[@]} 】

22、ping命令
ping IP         【不加选项,控制台会一致返回ping的结果】
ping -c 3 IP    【-c 表示完成次数,ping 3次返回控制台结果】
参数:
-c     【完成次数】
-i     【间隔秒数】
-w     【等待每次回复的超时时间;ping -w 10 等待每次回复的超时时间为10秒】

23、source /home/shell.sh  【加载shell.sh脚本你,这样就可以本脚本中调用shell.sh中的函数和变量】

24、nohup命令
在unix/linux中,普通进程用&符号放到后台进行,如果启动该程序的控制台logout,则该进程随即终止,为守护进程可以使用
nohup命令
nohup <程序名> & 【使用nohup,原程序的标准输出被自动重定向到当前目录下的nohup.out文件】

举例:
nohup command|args | &

指定nohup输出到某文件:
nohup cmmand>file 2>&1 &
nohup cmmand 2>&1 | tee -a file & 【command内容输出到控制台器追加到file文件】

25、sysctl命令
sysctl命令被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中。它包含一些TCP/ip堆栈和虚拟内
存系统的高级选项。
语法:
sysctl (选项) (参数)
选项:
-n:  打印值时不打印关键字; 
-e:  忽略未知关键字错误; 
-N:  仅打印名称; 
-w:  当改变sysctl设置时使用此项; 
-p:  从配置文件“/etc/sysctl.conf”加载内核参数设置; 
-a:  打印当前所有可用的内核参数变量和值; 
-A:  以表格方式打印当前所有可用的内核参数变量和值。
sysctl --system            【手动加载所有的配置文件】
sysctl -p filename.conf    【单独指定配置文件加载】
sysctl kernel.sysrq=1      【效果等同:# echo "1" > /proc/sys/kernel/sysrq ,直接通过sysctl工具配置值】

26、对于centOS7系统,/etc/hosts文件里IP domain  domain2...
IP后面的称为域名,是用户自定义的,可以随意命名,且可以接多个;
命名后保存即生效,可用于ssh domain远程跳转

27、域名解析配置文件
/etc/resolv.conf
/etc/resolv.conf是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序:
其中参数代表的意思:
(1)、resolv.conf的关键字
nameserver    定义DNS服务器的IP地址
domain        定义本地域名
search        定义域名的搜索列表
sortlist      对返回的域名进行排序
(2)、一个/etc/resolv.conf的示例:
domain  51osos.com
search  www.51osos.com  51osos.com
nameserver 202.102.192.68
nameserver 202.102.192.69
(3)、一般就配置nameserver关键字
nameserver 202.102.192.68 

28、command是shell的内键,无视shell脚本中的"同名"函数,执行特定的命令
#!/bin/bash
echo 123
command "ls" 【直接执行ls的命令,且是当前脚本路径执行】

29、basename命令用法
为basename指定一个路径,basename命令会删掉所有的前缀包括最后一个slash(‘/’)字符,然后将字符串显示出来。
格式:
basename [pathname] [suffix]
basename [string] [suffix]
suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。

示例:
basename /usr/bin/sort              【输出 sort】
basename ./include/stdio.h .h       【输出 stdio,指定后缀为.h,删除第一个参数的文件名的后缀.h】
basename  -s  .h  include/stdio.h   【输出 stdio,-s 指定后缀.h,从而删除后缀只显示文件名】
basename -a any/str1 any/str2 
结果:
str1
str2
注意点:
1、如果传递参数给basename,参数为空,basename会将参数左移
2、basename最多接受两个参数,如果设置的参数多于两个,会提示错误。
举例:
basename ab b 【输出a 因为这里把b当做后缀,删除字符串ab中的后缀】

30、type命令
type命令 用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令。
命令类型:
  alias:     别名
  keyword:   关键字,Shell保留字
  function:  函数,Shell函数
  builtin:   内建命令,Shell内建命令
  file:      文件,磁盘文件,外部命令
  unfound:   未找到
  
语法:
tpye [选项] [参数]
选项:
-t:   输出"file"、"alias"或者 "builtin",分别表示给定的指令为:"外部指令"、"命令别名" 或者 "内部指令";
-p:   如果给出的指令为外部指令,则显示其绝对路径;
-a:   在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名。
参数:
指令:要显示类型的指令

举例:
[root@localhost ~]# type ls
ls is aliased to `ls --color=tty'

[root@localhost ~]# type cd
cd is a shell builtin

31、要对文本数据的每一行后面加上 ' , (单引号和逗号),可以使用UE工具:
ctrl+r ,复制每行的最后到下一行的开头,替换为 (单引号和逗号)

32、
wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络
的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地
方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

wget(选项)(参数)
选项
-P     表示下载到哪个目录
-r     表示递归下载
-R     拒绝接受的文件类型{-R *.txt}
-np    不要追溯到父目录
-nd    递归下载时不创建一层一层的目录,把所有的文件下载到当前目录
-nH    不创建以目标主机域名为目录名的目录,将目标主机的目录结构直接下到当前目录下
-nc    不要覆盖存在的文件或使用.#前缀
-k     表示将下载的网页里的链接修改为本地链接.
-p     获得所有显示网页所需的元素
-c     断点续传
-o     将log日志指定保存到文件(新建一个文件)
-O     test.zip 下载并以不同的文件名保存
-a     –append-output=FILE 把记录追加到FILE文件中
-A     zip 只下载指定文件类型(zip)
-N     不要重新下载文件除非比本地文件新
-m     –mirror 等价于 -r -N -l inf -nr
--passive-ftp   使用被动模式PASV连接FTP服务器
--follow-ftp    从HTML文件中下载FTP连接文件

实例:
使用wget下载单个文件
wget http://www.linuxde.net/testfile.zip

33、free -g(查看linux系统内存使用情况);free -h(可显示单位查看具体内存值)

34、Centos7密码复杂度设置:
Linux对应的密码策略模块有:pam_passwdqc 和 pam_pwquality 。其中pam_passwdqc模块对应的是/etc/login.defs,pam_pwquality对应的是/etc/security/pwquality.conf

1)、/etc/security/pwquality.conf详解:
retry=N:    定义登录/修改密码失败时,可以重试的次数;
Difok=N:    定义新密码中必须有几个字符要与旧密码不同。但是如果新密码中有1/2以上的字符与旧密码不同时,该新密码将被接受;
minlen=N:   定义用户密码的最小长度;
dcredit=N:  定义用户密码中必须包含多少个数字;
ucredit=N:  定义用户密码中必须包含多少个大写字母;
lcredit=N:  定义用户密码中必须包含多少个小些字母;
ocredit=N:  定义用户密码中必须包含多少个特殊字符(除数字、字母之外);
【其中 =-1表示,至少有一个】

2)、/etc/login.defs详解:
PASS_MAX_DAYS 99999    密码的最大有效期, 99999:永久有期
PASS_MIN_DAYS 0        是否可修改密码,0可修改,非0多少天后可修改
PASS_MIN_LEN 5         密码最小长度,使用pam_cracklib module,该参数不再有效
PASS_WARN_AGE 7        密码失效前多少天在用户登录时通知用户修改密码

3)、实际生产环境配置
vim /etc/security/pwquality.conf
minlen = 8
minclass = 1
maxrepeat = 0
maxclassrepeat = 4
lcredit = -1
ucredit = -1
dcredit = -1
ocredit = -1
difok=5

vim /etc/login.defs
PASS_MAX_DAYS 90
PASS_MIN_LEN 12
PASS_MIN_DAYS 7
PASS_WARN_AGE 30

35、
删除大容量文件(直接用rm命令会卡死shell)
注:如下的命令都是清空文件的内容,并未删除文件,可以再清空之后再执行rm命令删除文件
1)、
> file.log

2)、
:> file.log 

3)、
true> file.log

4)、
cat /dev/null > file.log

5)、
dd if=/dev/null of=file.log (if代表输入文件,of代表输出文件)

6)、
echo > file.log 或 echo "" > file.log

7)、
truncate -s 0 file.log (数字0)

36、
cd用于切换工作目录,但是如果你在两个目录之间需要频繁切换时,比如/etc/httpd/log/error和/home/testUser/Desktop/shell_test,那这样一直 
cd会发疯的。所以pushd在此时是个好选择
(1)、dirs
1】功能
显示当前目录栈中的所有记录(不带参数的dirs命令显示当前目录栈中的记录)
2】语法
格式:dirs  [-clpv]  [+n]  [-n]
选项:
-c      删除目录栈中的所有记录
-l      以完整格式显示
-p      一个目录一行的方式显示
-v      每行一个目录来显示目录栈的内容,每个目录前加上的编号
+N      显示从左到右的第n个目录,数字从0开始
-N      显示从右到左的第n个日录,数字从0开始
注意:dirs始终显示当前目录, 再是堆栈中的内容;即使目录堆栈为空, dirs命令仍然只显示当前目录

(2)、pushd 
1】功能
pushd命令常用于将目录加入到栈中,加入记录到目录栈顶部,并切换到该目录;若pushd命令不加任何参数,则会将位于栈最上面的2个目录兑换位置
2】语法
格式: pushd [目录] [-N] [+N] [-n]
选项:
[目录]   将该目录加入到栈顶,并执行"cd 目录"
[+N]     将第N个目录移至栈顶,并切换至该目录(从左边数起,数字从0开始)
[-N]     将第N个目录移至栈顶,并切换到该目录(从右边数起,数字从0开始)
-n       将目录入栈时,不切换目录

(3)、popd
1】功能
popd用于删除目录栈中的记录;如果popd命令不加任何参数,则会先删除目录栈最上面的记录,然后切换到删除过后的目录栈中的最上面的目录
2】语法
格式:popd  [-N | +N]   [-n]
选项:
+N    将第N个目录删除(从左边数起,数字从0开始)
-N    将第N个目录删除(从右边数起,数字从0开始)
-n    将目录出栈时,不切换目录

举例:
[root@hdc_1 software]# pushd test
/home/software/test /home/software  
[root@hdc_1 test]#                  {将/home/software/test目录压入栈顶,并cd到该目录}

[root@hdc_1 test]# dirs
/home/software/test /home/software  {dirs命令显示当前目录栈中的所有记录}

[root@hdc_1 software]# pushd sbin/
/home/software/sbin /home/software /home/software/test
[root@hdc_1 sbin]# pushd
/home/software /home/software/sbin /home/software/test  
[root@hdc_1 software]#              {不加参数时,将目录栈中的前两个目录互换位置并cd到互换后的栈顶目录里}

/home/software /home/software/sbin /home/software/test
[root@hdc_1 software]# popd -0
/home/software /home/software/sbin
[root@hdc_1 software]#              {将目录栈中右边第一个目录/home/software/test删除栈}

37、
visudo命令
即编辑/etc/sudoers配置文件

root    ALL=(ALL)       ALL                  【在该行下面增加如下】
test    ALL=(root) /usr/sbin/useradd         【新增加用户行】 
……后面省略
     说明:test    ALL=(root) /usr/sbin/useradd 
     第一个字段:test为能使用sudo命令的用户; 
     第二个字段:第一个ALL为允许使用sudo的主机,第二个括号里的root为使用sudo后以什么身份(目的用户身份)来执行命令; 
     第三个字:/usr/sbin/useradd为以sudo命令允许执行的命令; 
     故解释为:表示允许test用户从任何主机登录,以root的身份执行/usr/sbin/useradd命令。

欢迎使用Markdown编辑器

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t &ThinSpace; . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值