Linux 常用命令
1.nohup和&区别(如何后台运行程序)
nohup
nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
nohup 是 no hang up 的缩写,就是不挂断的意思。
nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中。
eg:
1. nohup command > myout.file 2>&1 &
在上面的例子中,0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;
2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到myout.file文件中。
2. 0 22 * * * /usr/bin/python /home/pu/download_pdf/download_dfcf_pdf_to_oss.py > /home/pu/download_pdf/download_dfcf_pdf_to_oss.log 2>&1
这是放在crontab中的定时任务,晚上22点时候怕这个任务,启动这个python的脚本,并把日志写在download_dfcf_pdf_to_oss.log文件中
nohup和&的区别
& : 指在后台运行
nohup : 不挂断的运行,注意并没有后台运行的功能,,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行
&是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出
那么,我们可以巧妙的吧他们结合起来用就是
nohup COMMAND &
这样就能使命令永久的在后台执行
例如:
- sh test.sh &
将sh test.sh任务放到后台 ,关闭xshell,对应的任务也跟着停止。 - nohup sh test.sh
将sh test.sh任务放到后台,关闭标准输入,终端不再能够接收任何输入(标准输入),重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。 - nohup sh test.sh &
将sh test.sh任务放到后台,但是依然可以使用标准输入,终端能够接收任何输入,重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。
————————————————
原文链接:https://blog.youkuaiyun.com/qq_18298439/article/details/98756115
2.linux常用命令
ls 显示文件或目录
-l 列出文件详细信息l(list)
-a 列出当前目录下所有文件及目录,包括隐藏的a(all)
mkdir 创建目录
-p 创建目录,若无父目录,则创建p(parent)
cd 切换目录
touch 创建空文件
echo 创建带有内容的文件。
cat 查看文件内容
cp 拷贝
复制文件包括其子文件到自定目录
cp -r sourceFolder targetFolder
mv 移动或重命名
rm 删除文件
-r 递归删除,可删除子目录及文件
-f 强制删除
删除文件包括其子文件
rm -rf file
find 在文件系统中搜索某文件
find / -name filename.txt
根据名称查找/目录下的filename.txt文件。
wc 统计文本中行数、字数、字符数
grep 在文本文件中查找某个字符串
rmdir 删除空目录
删除目录(此目录是空目录)
rmdir file
tree 树形结构显示目录,需要安装tree包
pwd 显示当前目录
ln 创建链接文件
more、less 分页显示文本文件内容
head、tail 显示文件头、尾内容
ctrl+alt+F1 命令行全屏模式
系统管理命令
stat 显示指定文件的详细信息,比ls更详细
who 显示在线登陆用户
whoami 显示当前操作用户
hostname 显示主机名
uname 显示系统信息
top 动态显示当前耗费资源最多进程信息
ps 显示瞬间进程状态 ps -aux
du 查看目录大小 du -h /home带有单位显示目录信息
df 查看磁盘大小 df -h 带有单位显示磁盘信息
ifconfig 查看网络情况
ping 测试网络连通
netstat 显示网络状态信息
man 命令不会用了,找男人 如:man ls
clear 清屏
alias 对命令重命名 如:alias showmeit=“ps -aux” ,另外解除使用unaliax showmeit
kill 杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。
打包压缩相关命令
tar: 打包压缩
-c 归档文件
-x 压缩文件
-z gzip压缩文件
-j bzip2压缩文件
-v 显示压缩或解压缩过程 v(view)
-f 使用档名
tar命令
解压:tar zxvf FileName.tar
压缩:tar czvf FileName.tar DirName
列出压缩文件列表
tar -tzf test.tar.gz
gz命令
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
压缩多个文件:tar zcvf FileName.tar.gz DirName1 DirName2 DirName3 …
zip命令
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
vim使用
vim三种模式:命令模式、插入模式、编辑模式。使用ESC或i或:来切换模式。
命令模式下:
:q 退出
:q! 强制退出
:wq 保存并退出
:set number 显示行号
:set nonumber 隐藏行号
/apache 在文档中查找apache 按n跳到下一个,shift+n上一个
yyp 复制光标所在行,并粘贴
h(左移一个字符←)、j(下一行↓)、k(上一行↑)、l(右移一个字符→)
文件权限管理
三种基本权限
R 读 数值表示为4
W 写 数值表示为2
X 可执行 数值表示为1
-rw-rw-r–一共十个字符,分成四段。
第一个字符“-”表示普通文件;这个位置还可能会出现“l”链接;“d”表示目录
第二三四个字符“rw-”表示当前所属用户的权限。 所以用数值表示为4+2=6
第五六七个字符“rw-”表示当前所属组的权限。 所以用数值表示为4+2=6
第八九十个字符“r–”表示其他用户权限。 所以用数值表示为2
修改文件权限
chmod 777 file.java
//file.java的权限-rwxrwxrwx,r表示读、w表示写、x表示可执行
查看一个程序是否运行
ps –ef|grep tomcat
查看所有有关tomcat的进程
终止线程
kill -9 19979
终止线程号位19979的线程
切换用户
su -username
查看文件头10行
head -n 10 file.txt
查看文件尾10行
tail -n 10 file.txt
查看日志文件
tail -f file.log
//这个命令会自动显示新增内容,屏幕只显示10行内容的(可设置)。
查看实时日志
tail -f catalina.out
————————————————
原文链接:https://blog.youkuaiyun.com/qq_18298439/article/details/81737116
3.Scp :不同主机间文件传输
[root@hadoop102 software]#scp jdk-8u144-linux-x64.tar.gz root@192.168.116.142:/opt/software/jdk-8u144-linux-x64.tar.gz
4.linux 中 export 设置环境变量的注意事项
功能说明:设置或显示环境变量
语法:export [-fnp][变量名称]=[变量设置值]
补充说明:在shell中执行程序时,shell会提供一组环境变量。 export可新增,修改或删除环境变量,供后续执行的程序使用。
export的效力仅及于该此登陆操作。
参数:
-f 代表[变量名称]中为函数名称。
-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p 列出所有的shell赋予程序的环境变量。
一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个
shell脚本调用并执行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。
export命令可以用于传递一个或多个变量的值到任何后继脚本
5.xshell登录 Linux 慢怎么办
1.登录Linux系统,打开终端,修改文件:/etc/ssh/sshd_config
2.在打开的文件中,找到UseDNS属性,命令/UseDNS
UseDNS yes —>默认为注释行
此时将UseDNS yes修改为UseDNS no,没有的则加上这一行,便可。
3.保存退出,命令:wq
然后systemctl restart sshd重启ssh服务即可
6.禁用selinux
[root@tcsd142 ~]# vim /etc/selinux/config
7.修改/etc/sudoers权限 允许root用户执行任意路径下的任意命令
Allow root to run any commands anywhere
root ALL=(ALL) ALL
tcsd ALL=(ALL) ALL (添加的)
1.sudo用途
a.对用户的执行命令权限进行限制;
b.提供了日志记录,可详细记录每个用户具体的操作;
c.临时性的时间戳(一般为5min),在此期间使用sudo命令,不需要再输入密码;
d.配置文件为/etc/sudoers,可以使root对用户集中管理
2.sudo工作原理
a.当用户执行sudo时,系统寻找/etc/sudoers文件,判断该用户是否具备执行sudo的权限;
b.确认用户权限后,让用户输入自身的密码;
c.若密码合法,则开始执行sudo后续的命令;
d.root执行sudo时不需要输入密码,自身切换自身也不需要输入密码.
3.sudo常用参数
visudo -c 检查/etc/sudoers的语法
/etc/sudoers: parsed OK
$ sudo -l 列出目前用户可执行与无法执行的指令
$ sudo -k 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码
$ sudo -v 延长密码有效期限5分钟
$ sudo -V 显示版本信息
8.centos7修改hostname
1.如果存在/etc/hostname文件,读取其内容为localhost。
hostname的配置文件为 /etc/sysconfig/network
hostname为linux系统内核参数,保存在/proc/sys/kernel/hostname
2.其值是linux启动时从rc.sysinit读取的。
如果存在/etc/hostname,其内容为localhost,
否则/etc/rc.d/rc.sysinit中HOSTNAME的取值来自于/etc/sysconfig/network下的HOSTNAME。
这样hostname怎么修改就清楚了。
https://blog.youkuaiyun.com/qq_36666651/article/details/84984903
//永久性的修改主机名称,重启后能保持修改后的。
hostnamectl set-hostname xxx
9.查看主机名、操作系统环境
Hostnamectl
uname -a //查看到的是瞬态的(Tansient hostname)
cat /etc/redhat-release //查看操作系统环境
10./etc/hosts文件的作用
Hosts - The static table lookup for host name(主机名查询静态表)
3. 配置文件格式说明
一般/etc/hosts 的内容一般有如下类似内容:
127.0.0.1 localhost.localdomain localhost
192.168.1.100 linmu100.com linmu100
192.168.1.120 ftpserver ftp120
一般情况下hosts文件的每行为一个主机,每行由三部份组成,每个部份由空格隔开。其中#号开头的行做说明,不被系统解释。
第一部份:网络IP地址;
第二部份:主机名或域名;
第三部份:主机名别名;
当然每行也可以是两部份,即主机IP地址和主机名;比如 192.168.1.100 linmu100。
这里可以稍微解释一下主机名(hostname)和域名(Domain)的区别:主机名通常在局域网内使用,通过hosts文件,主机名就被解析到对应ip;域名通常在internet上使用,但如果本机不想使用internet上的域名解析,这时就可以更改hosts文件,加入自己的域名解析。
11.针对centos7防火墙配置
修改防火墙
将firewalld.service切换为iptables
firewall-cmd --state 查看防火墙状态
切换到iptables首先应该关掉默认的firewalld,然后安装iptables服务。
1、关闭firewall:
systemctl stop firewalld.service
systemctl disable firewalld.service #禁止firewall开机启动
2、安装iptables防火墙
yum install iptables-services #安装
service iptables save
3、编辑iptables防火墙配置
vi /etc/sysconfig/iptables #编辑防火墙配置文件
下边是一个完整的配置文件:
在你运行完save中间插入下面的规则
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
:wq! #保存退出
systemctl start iptables.service #开启
systemctl enable iptables.service #设置防火墙开机启动
12.附赠防火墙脚本,前提你已经切换至iptables
#!/bin/bash
IPT=which iptables
$IPT -F
$IPT -X
$IPT -P INPUT DROP
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -N syn-flood
##本地回环 内网允许任何
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -m state --state NEW -s 10.0.0.0/8 -j ACCEPT
ssh 端口开放 任何IP
$IPT -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
根据需求填写相应的端口
$IPT -A INPUT -p tcp -m multiport --dports 80,8087,89 -j ACCEPT
zabbix监控地址
$IPT -A INPUT -p tcp -s zabbix.ip -m state --state NEW -m tcp --dport 10050 -j ACCEPT
ICMP 规则控制
$IPT -A INPUT -p icmp -m limit --limit 100/sec --limit-burst 100 -j ACCEPT
$IPT -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
DOS防护
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn-flood
$IPT -A INPUT -j REJECT --reject-with icmp-host-prohibited
$IPT -A syn-flood -p tcp -m limit --limit 3/sec --limit-burst 6 -j RETURN
$IPT -A syn-flood -j REJECT --reject-with icmp-port-unreachable