Linux常用指令整理

常用命令
指令用途
ifconfig显示网卡的配置
ls -l查看目录中的文件的详细信息
cd切换目录
cp file1 file2复制文件
cp -r dir1 dir2复制目录
pwd当前路径
mkdir新建目录
mv移动/重命名一个目录或文件
rm -f file删除文件
rm -rf dir删除目录
rmdir dir删除空文件夹
vim(vi)打开并浏览文件
grep str file在文件中查找str
grep ^str file在文件中查找以 str 开始的行
tar -cvf 目标.tar dir把文件夹打包
tar -xvf 目标.tar -C /root压缩包释放到 /root目录下
adduser name添加用户
passwd name设置用户密码
kill -9 pid杀死进程
service iptables start(restart、stop)开启(重启、关闭)防火墙
reboot重启系统
init 3(5)3:dos界面 5:图形化界面(/etc/inittab修改默认启动方式【id:3:initdefault】)
chmod 777 dir(file)给系统管理员操作权限
rpm -qa | grep xxx查询已安装的xxx程序
source /etc/profile使配置立即生效
netstat -ntlp查看所有的进程信息
data -s “2018-03-06 03:03:03”手动同步集群各机器时间
jps列出jvm进程
getconf LONG_BIT查看linux是32位还是64位
df -h查看磁盘使用情况
free -h查看内存使用情况
top查看进程
cat /proc/cpuinfo查看cpu信息
echo 1 > /proc/sys/vm/drop_caches清缓存
系统服务管理
指令作用
service --status-all查看系统所有的后台服务进程
service sshd status查看指定的后台服务进程的状态
service sshd stop(restart、start)关闭、重启,开启指定的后台服务进程
chkconfig httpd on让 httpd 服务开机自启
chkconfig httpd off让 httpd 服务开机不要自启
chkconfig --list httpd查看httpd服务状态
网络管理
指令作用
hostname查看主机名
hostname name修改主机名(重启后无效)
vi /ect/sysconfig/network修改主机名(重启后永久生效)
vi /etc/sysconfig/network-scripts/ifcfg-eth0修改配置文件(重启后永久生效)
service network restart重启网络服务
/etc/hosts文件域名映射
netstat –nlpt获取进程名、进程号以及用户 ID
防火墙打开3306端口
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables status
时间
指令作用
date查看时间和日期
cal本月月历
date -s 03/06/2018设将系统日期设定成2009年11月3日的命令
date -s 14:52:52将系统时间设定成下午2点52分52秒的命令
hwclock -w将当前时间和日期写入BIOS,避免重启后失效
date -R查看当前时区
tzselect设置linux服务器时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime设置中国时区使用亚洲/上海(+8)

加入crontab

echo "*/20 * * * * /usr/sbin/ntpdate -u ntp.api.bz >/dev/null &" >> /var/spool/cron/root

ntpdate ntp.api.bz

[root@node01 hadoop]# ntpdate ntp.api.bz
17 Feb 21:56:06 ntpdate[13563]: step time server 114.118.7.163 offset 204815.068987 sec
[root@node01 hadoop]# date
Sun Feb 17 21:56:10 CST 2019

可用的NTP服务器地址

NameIPLocation
210.72.145.44210.72.145.44中国(国家授时中心)
ntp.api.bz47.98.146.45NTP服务器(上海)
time.nist.gov美国
ntp.fudan.edu.cn复旦
time.windows.com微软公司授时主机(美国)
asia.pool.ntp.org台警大授时中心(台湾)
133.100.11.8133.100.11.8日本(福冈大学)
time-a.nist.gov129.6.15.28NIST,Gaithersburg,Maryland
time-b.nist.gov129.6.15.29NIST,Gaithersburg,Maryland
time-a.timefreq.bldrdoc.gov132.163.4.101NIST,Boulder,Colorado
time-b.timefreq.bldrdoc.gov132.163.4.102NIST,Boulder,Colorado
time-c.timefreq.bldrdoc.gov132.163.4.103NIST,Boulder,Colorado
utcnist.colorado.edu128.138.140.44UniversityofColorado,Boulder
time.nist.gov192.43.244.18NCAR,Boulder,Colorado
time-nw.nist.gov131.107.1.10Microsoft,Redmond,Washington
nist1.symmetricom.com69.25.96.13Symmetricom,SanJose,California
nist1-dc.glassey.com216.200.93.8Abovenet,Virginia
nist1-ny.glassey.com208.184.49.9Abovenet,NewYorkCity
nist1-sj.glassey.com207.126.98.204Abovenet,SanJose,California
nist1.aol-ca.truetime.com207.200.81.113TrueTime,AOLfacility,Sunnyvale,California
nist1.aol-va.truetime.com64.236.96.53TrueTime,AOLfacility,Virginia
使用快捷方式设置时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date命令的功能是显示和设置系统日期和时间。 
  该命令的一般格式为: date [选项] 显示时间格式(以+开头,后面接格式) 
  date 设置时间格式 
  命令中各选项的含义分别为: 
  -d datestr, --date datestr 显示由datestr描述的日期 
  -s datestr, --set datestr 设置datestr 描述的日期 
  -u, --universal 显示或设置通用时间 时间域 
  % H 小时(00..23) 
  % I 小时(01..12) 
  % k 小时(0..23) 
  % l 小时(1..12) 
  % M 分(00..59) 
  % p 显示出AM或PM 
  % r 时间(hh:mm:ss AM或PM),12小时 
  % s 从1970年1月1日00:00:00到目前经历的秒数 
  % S 秒(00..59) 
  % T 时间(24小时制)(hh:mm:ss) 
  % X 显示时间的格式(%H:%M:%S) 
  % Z 时区 日期域 
  % a 星期几的简称( Sun..Sat) 
  % A 星期几的全称( Sunday..Saturday) 
  % b 月的简称(Jan..Dec) 
  % B 月的全称(January..December) 
  % c 日期和时间( Mon Nov 8 14:12:46 CST 1999) 
  % d 一个月的第几天(01..31) 
  % D 日期(mm/dd/yy) 
  % h 和%b选项相同 
  % j 一年的第几天(001..366) 
  % m 月(01..12) 
  % w 一个星期的第几天(0代表星期天) 
  % W 一年的第几个星期(00..53,星期一为第一天) 
  % x 显示日期的格式(mm/dd/yy) 
  % y 年的最后两个数字( 1999则是99) 
  % Y 年(例如:1970,1996等) 
  需要特别说明的是,只有超级用户才能用date命令设置时间,一般用户只能用date命令显示时间。
SSH(安全外壳协议)

简介:Secure Shell 远程连接协议

  1. 通过输入用户名和密码连接

    ssh 用户名@ip地址

  2. 免密登陆

切换到.ssh目录
cd ~/.ssh

生成ssh免登陆密钥

ssh-keygen -t rsa (四个回车)

执行完这个命令后,会生成id_rsa(私钥)、id_rsa.pub(公钥)

将公钥拷贝到要免密登陆的目标机器上

ssh-copy-id 用户名@ip地址

上传本地文件到服务器
scp /path/filename username@servername:/path/

上传本地目录到服务器
scp -r local_dir(本地目录)  /path username@servername:/path/remote_dir/(远程目录)

从服务器上下载文件
scp username@servername:/path/filename /local_dir(本地目录)

从服务器上下载文件
scp -r username@servername:/path/remote_dir/(远程目录) /local_dir(本地目录)
25个必须记住的SSH命令
OpenSSH是SSH连接工具的免费版本。telnet,rlogin和ftp用户可能还没意识到他们在互联网上传输的密码是未加密的,但SSH是加密的,OpenSSH加密所有通信(包括密码),有效消除了窃听,连接劫持和其它攻击。此外,OpenSSH提供了安全隧道功能和多种身份验证方法,支持SSH协议的所有版本。

SSH是一个非常伟大的工具,如果你要在互联网上远程连接到服务器,那么SSH无疑是最佳的候选。下面是通过网络投票选出的25个最佳SSH命令,你必须牢记于心。

(注:有些内容较长的命令,在本文中会显示为截断的状态。如果你需要阅读完整的命令,可以把整行复制到您的记事本当中阅读。)

1、复制SSH密钥到目标主机,开启无密码SSH登录

ssh-copy-id user@host
如果还没有密钥,请使用ssh-keygen命令生成。

2、从某主机的80端口开启到本地主机2001端口的隧道

ssh -N -L2001:localhost:80 somemachine
现在你可以直接在浏览器中输入http://localhost:2001访问这个网站。

3、将你的麦克风输出到远程计算机的扬声器

dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp
这样来自你麦克风端口的声音将在SSH目标计算机的扬声器端口输出,但遗憾的是,声音质量很差,你会听到很多嘶嘶声。

4、比较远程和本地文件

ssh user@host cat /path/to/remotefile | diff /path/to/localfile –
在比较本地文件和远程文件是否有差异时这个命令很管用。

5、通过SSH挂载目录/文件系统

sshfs name@server:/path/to/folder /path/to/mount/point
从http://fuse.sourceforge.net/sshfs.html下载sshfs,它允许你跨网络安全挂载一个目录。

6、通过中间主机建立SSH连接

ssh -t reachable_host ssh unreachable_host
Unreachable_host表示从本地网络无法直接访问的主机,但可以从reachable_host所在网络访问,这个命令通过到reachable_host的“隐藏”连接,创建起到unreachable_host的连接。

7、将你的SSH公钥复制到远程主机,开启无密码登录 – 简单的方法

ssh-copy-id username@hostname
8、直接连接到只能通过主机B连接的主机A

ssh -t hostA ssh hostB
当然,你要能访问主机A才行。

9、创建到目标主机的持久化连接

ssh -MNf <user>@<host>
在后台创建到目标主机的持久化连接,将这个命令和你~/.ssh/config中的配置结合使用:

Host host
ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster no
所有到目标主机的SSH连接都将使用持久化SSH套接字,如果你使用SSH定期同步文件(使用rsync/sftp/cvs/svn),这个命令将非常有用,因为每次打开一个SSH连接时不会创建新的套接字。

10、通过SSH连接屏幕

ssh -t remote_host screen –r
直接连接到远程屏幕会话(节省了无用的父bash进程)。

11、端口检测(敲门)

knock <host> 3000 4000 5000 && ssh -p <port> user@host && knock <host> 5000 4000 3000
在一个端口上敲一下打开某个服务的端口(如SSH),再敲一下关闭该端口,需要先安装knockd,下面是一个配置文件示例。

[options]
logfile = /var/log/knockd.log
[openSSH]
sequence = 3000,4000,5000
seq_timeout = 5
command = /sbin/iptables -A INPUT -i eth0 -s %IP% -p tcp –dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 5000,4000,3000
seq_timeout = 5
command = /sbin/iptables -D INPUT -i eth0 -s %IP% -p tcp –dport 22 -j ACCEPT
tcpflags = syn
12、删除文本文件中的一行内容,有用的修复

ssh-keygen -R <the_offending_host>
在这种情况下,最好使用专业的工具。

13、通过SSH运行复杂的远程shell命令

ssh host -l user $(<cmd.txt)
更具移植性的版本:

ssh host -l user “`cat cmd.txt`”
14、通过SSH将MySQL数据库复制到新服务器

mysqldump –add-drop-table –extended-insert –force –log-error=error.log -uUSER -pPASS OLD_DB_NAME | ssh -C user@newhost “mysql -uUSER -pPASS NEW_DB_NAME”
通过压缩的SSH隧道Dump一个MySQL数据库,将其作为输入传递给mysql命令,我认为这是迁移数据库到新服务器最快最好的方法。

15、删除文本文件中的一行,修复“SSH主机密钥更改”的警告

sed -i 8d ~/.ssh/known_hosts
16、从一台没有SSH-COPY-ID命令的主机将你的SSH公钥复制到服务器

cat ~/.ssh/id_rsa.pub | ssh user@machine “mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys”
如果你使用Mac OS X或其它没有ssh-copy-id命令的*nix变种,这个命令可以将你的公钥复制到远程主机,因此你照样可以实现无密码SSH登录。

17、实时SSH网络吞吐量测试

yes | pv | ssh $host “cat > /dev/null”
通过SSH连接到主机,显示实时的传输速度,将所有传输数据指向/dev/null,需要先安装pv。

如果是Debian:

apt-get install pv
如果是Fedora:

yum install pv
(可能需要启用额外的软件仓库)。

18、如果建立一个可以重新连接的远程GNU screen

ssh -t user@some.domain.com /usr/bin/screen –xRR
人们总是喜欢在一个文本终端中打开许多shell,如果会话突然中断,或你按下了“Ctrl-a d”,远程主机上的shell不会受到丝毫影响,你可以重新连接,其它有用的screen命令有“Ctrl-a c”(打开新的shell)和“Ctrl-a a”(在shell之间来回切换),请访问http://aperiodic.net/screen/quick_reference阅读更多关于screen命令的快速参考。

19、继续SCP大文件

rsync –partial –progress –rsh=ssh $file_source $user@$host:$destination_file
它可以恢复失败的rsync命令,当你通过VPN传输大文件,如备份的数据库时这个命令非常有用,需要在两边的主机上安装rsync。

rsync –partial –progress –rsh=ssh $file_source $user@$host:$destination_file local -> remote
或

rsync –partial –progress –rsh=ssh $user@$host:$remote_file $destination_file remote -> local
20、通过SSH W/ WIRESHARK分析流量

ssh root@server.com ‘tshark -f “port !22″ -w -' | wireshark -k -i –
使用tshark捕捉远程主机上的网络通信,通过SSH连接发送原始pcap数据,并在wireshark中显示,按下Ctrl+C将停止捕捉,但也会关闭wireshark窗口,可以传递一个“-c #”参数给tshark,让它只捕捉“#”指定的数据包类型,或通过命名管道重定向数据,而不是直接通过SSH传输给wireshark,我建议你过滤数据包,以节约带宽,tshark可以使用tcpdump替代:

ssh root@example.com tcpdump -w – ‘port !22′ | wireshark -k -i –
21、保持SSH会话永久打开

autossh -M50000 -t server.example.com ‘screen -raAd mysession’
打开一个SSH会话后,让其保持永久打开,对于使用笔记本电脑的用户,如果需要在Wi-Fi热点之间切换,可以保证切换后不会丢失连接。

22、更稳定,更快,更强的SSH客户端

ssh -4 -C -c blowfish-cbc
强制使用IPv4,压缩数据流,使用Blowfish加密。

23、使用cstream控制带宽

tar -cj /backup | cstream -t 777k | ssh host ‘tar -xj -C /backup’
使用bzip压缩文件夹,然后以777k bit/s速率向远程主机传输。Cstream还有更多的功能,请访问http://www.cons.org/cracauer/cstream.html#usage了解详情,例如:

echo w00t, i’m 733+ | cstream -b1 -t2
24、一步将SSH公钥传输到另一台机器

ssh-keygen; ssh-copy-id user@host; ssh user@host
这个命令组合允许你无密码SSH登录,注意,如果在本地机器的~/.ssh目录下已经有一个SSH密钥对,ssh-keygen命令生成的新密钥可能会覆盖它们,ssh-copy-id将密钥复制到远程主机,并追加到远程账号的~/.ssh/authorized_keys文件中,使用SSH连接时,如果你没有使用密钥口令,调用ssh user@host后不久就会显示远程shell。

25、将标准输入(stdin)复制到你的X11缓冲区

ssh user@host cat /path/to/some/file | xclip
你是否使用scp将文件复制到工作用电脑上,以便复制其内容到电子邮件中?xclip可以帮到你,它可以将标准输入复制到X11缓冲区,你需要做的就是点击鼠标中键粘贴缓冲区中的内容。
sudo

sudo 是为所有想使用 root 权限的普通用户设计的。可以让普通用户具有临时使用 root 权限的权利。只需输入自己账户的密码即可。当然这个普通用户必须在/etc/sudoers 文件中有配置项、才具有使用 sudo 的权利。 没有配置权限之前,普通用户无法进行 root 权限操作。

使用 root 用户编辑**/etc/sudoers** 文件,给普通用户授权
命令行输入 visudo,打开**/etc/sudoers** 文件,加入如下的内容,保存。

## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL
username ALL=(ALL)       ALL

这样普通用户就可以使用 sudo 执行 root 权限的命令了

sudo 的工作过程如下:

  1. 当用户执行 sudo 时,系统会主动寻找/etc/sudoers 文件,判断该用户是否有执行 sudo 的权限
  2. 确认用户具有可执行 sudo 的权限后,让用户输入用户自己的密码确认
  3. 若密码输入成功,则开始执行 sudo 后续的命令

如果想要更加精准的控制,就需要理解配置中的含义。

username  ALL=(ALL)   ALL 

第一个 ALL 是指网络中的主机,我们可以指定主机名,这样 username 只可以
在此主机上执行后面的命令。第二个括号里的 ALL 是指目标用户,也就是以谁的
身份去执行命令。最后一个 ALL 是指命令名了。
例如,我们想让 username用户在 host1 主机上以 user1 的身份执行 kill 命
令,就这样编写配置文件:

username host1=(user1)  /bin/kill 

只允许 username用户以 root 身份在 host1上执行 ls 、cat 命令,并且执行时候免输入密码。

username host1=NOPASSWD:  /bin/ls,/bin/cat 
挂载(mount)命令

​ 在 linux 操作系统中,挂载是指将一个设备(通常是存储设备)挂接到一个已存在的目录上。要访问存储设备中的文件,通过访问这个挂载目录来访问。
​ 命令格式:mount [-t vfstype] [-o options] device dir
​ ​ -t vfstype 指定文件系统的类型。mount 会自动选择正确的类型。
​ ​ 常用类型有:光盘镜像 iso9660、linux 文件网络共享 nfs 等等。
​ ​ -o options 主要用来描述设备或档案的挂接方式。常用的参数有:
​ ​ loop:用来把一个文件当成硬盘分区挂接上系统
​ ​ ro:采用只读方式挂接设备
​ ​ rw:采用读写方式挂接设备
​ ​ device 要挂接(mount)的设备
​ ​ dir 设备在系统上的挂接点(mount point)
​ ​ 案例:挂载光驱

mkdir /mnt/cdrom  mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom/ 
将设备/dev/cdrom 挂载到 挂载点/mnt/cdrom 中 

​ 案例:挂载光盘镜像文件(.iso)

mkdir /mnt/centos 
mount -o loop  /root/Centos-6.7.DVD1.iso  /mnt/centos

​ 案例:卸载 umount

umount /mnt/cdrom

yum

yum(Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及CentOS 中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

yum 机制的强大之处在于 yum 源。yum 源相当是一个目录项,当我们使用 yum机制安装软件时,若需要安装依赖软件,则 yum 机制就会根据在 yum 源中定义好的路径查找依赖软件,并将依赖软件安装好。

yum 源分为网络 yum 源和本地 yum 源。

yum 源配置文件有两个。一是直接配置在/etc/yum.conf 中,其中包含一些主要的配置信息。另外就是/etc/yum.repos.d/下的 xx.repo 后缀文件, 默认都会被加载进来。

案例:使用 CentOS 镜像创建本地 yum 源
1、挂载 iso 镜像,拷贝所有文件至本地 yum 目录

mkdir /dev/centios /mnt/local_yum 
mount -o loop /root/CentOS-6.7-x86_64-bin-DVD1.iso /dev/centios 
cp -r /dev/centios/* /mnt/local_yum/ 

2、修改 yum 源配置

cd /etc/yum.repos.d/  
rename .repo .repo.bak *.repo 
cp CentOS-Base.repo.bak CentOS-Local.repo 
vi CentOS-Local.repo 
[local_yum] 
name=This is a local repo 
baseurl=file:///mnt/local_yum 
enabled=1

gpgcheck=1 
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 

3、更新 yum 配置

yum clean all 
yum repolist all

通过上面的步骤操作,已经可以使用本地 yum 源了。有需要进行安装的软件
包就可以直接运行”yum install xxx“进行安装了。
还可以参考附件资料,使用 DVD1 和 DVD2 镜像共同制作本地 yum 源。

yum常用命令

yum的命令形式一般是如下:yum [options] [command] [package …]

指令作用
yum list installed查看安装的所有程序
yum list installed | grep 程序查看安装的程序(利用管道符)
yum list显示所有已经安装和可以安装的程序包
yum remove package删除package软件包
yum install全部安装
yum install package安装指定的安装包package
yum groupinsall group安装程序组group
yum update全部更新
yum update package更新指定程序包package
yum check-update检查可更新的程序
yum upgrade package升级指定程序包package
yum groupupdate group升级程序组group
yum info package显示安装包信息package
yum常用包

yum install telnet 建立连接传输数据

yum install lrzsz 上传文件 # rz 选择文件上传

yum -y install ntp ntpdate 同步时间

yum安装mysql

1.新开的云服务器,需要检测系统是否自带安装mysql

# yum list installed | grep mysql

2.如果发现有系统自带mysql,果断这么干

# yum -y remove mysql-libs.x86_64

3.随便在你存放文件的目录下执行,这里解释一下,由于这个mysql的yum源服务器在国外,所以下载速度会比较慢,还好mysql5.6只有79M大,而mysql5.7就有182M了,所以这是我不想安装mysql5.7的原因

# wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm

4.接着执行这句,解释一下,这个rpm还不是mysql的安装文件,只是两个yum源文件,执行后,在/etc/yum.repos.d/ 这个目录下多出mysql-community-source.repo和mysql-community.repo

# rpm -ivh mysql-community-release-el6-5.noarch.rpm

5.这个时候,可以用yum repolist mysql这个命令查看一下是否已经有mysql可安装文件

#yum repolist all | grep mysql

6.安装mysql 服务器命令(一路yes):

# yum install mysql-community-server

7.安装成功后

# service mysqld start

8.由于mysql刚刚安装完的时候,mysql的root用户的密码默认是空的,所以我们需要及时用mysql的root用户登录(第一次回车键,不用输入密码),并修改密码

# mysql -u root
# use mysql;
# update user set password=PASSWORD("这里输入root用户密码") where User='root';
例如: update user set password=PASSWORD("123456") where User='root';
# flush privileges; 

解决编码错误  修改/etc/my.cnf 文件
[mysqld]
character_set_server=utf8

//查看字符编码
show variables like '%char%';

9.查看mysql是否自启动,并且设置开启自启动命令

# chkconfig --list | grep mysqld
# chkconfig mysqld on

在linux中很多软件的端口都被”防火墙”限止,我们需要将防火墙关闭
防火墙打开3306端口
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save
查看防火墙状况
/etc/init.d/iptables status

学习阶段我们也可以直接将防火墙关闭
(服务器别用)service iptables stop;

10.mysql安全设置(系统会一路问你几个问题,看不懂复制之后翻译,基本上一路yes):

# mysql_secure_installation
mysql离线安装

1.上传压缩包
2.解压
3.查看已安装的mysql rpm -qa |grep mysql
4.删除已安装的mysql rpm -e mysql-libs-5.1.71-1.el6.x86_64 --nodeps
5.安装我们自己的rpm包 rpm -ivh *.rpm
6.设置mysql的root密码,首先后台启动mysql cd /usr/lib
​ mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
7.进入mysql终端:mysql -u root mysql
8.设置密码: UPDATE user SET Password=PASSWORD(‘admin’) where USER=‘root’ and host=‘root’ or host=‘localhost’;
9.刷新权限:FLUSH PRIVILEGES;
10.退出mysql exit;
11.重启mysql:/etc/init.d/mysql restart
12 重新使用新密码登陆 mysql -uroot -p

  1. 重新设置一下密码:SET PASSWORD = PASSWORD(‘admin’);
    13.开启远程登陆:Grant all privileges on . to ‘root’@’%’ identified by ‘admin’ with grant option;
    14.刷新权限列表 :FLUSH PRIVILEGES;
grep
格式:grep [option] pattern [file]
使用实例: 
ps -ef | grep sshd  查找指定 ssh 服务进程 
ps -ef | grep sshd | grep -v grep 查找指定服务进程,排除 gerp 本身 
ps -ef | grep sshd –c 查找指定进程个数 

把a.txt中的内容覆盖到b.txt中
cat a.txt > b.txt
把a.txt中的内容追加到b.txt中
cat a.txt >> b.txt
cat a.txt | grep -f b.txt  从文件中读取关键词进行搜索 
输出 a.txt 文件中含有从 b.txt 文件中读取出的关键词的内容行 
cat a.txt | grep –nf b.txt  从文件中读取关键词进行搜索,显示行号 
grep -n 'linux' test.txt  从文件中查找关键词,并显示行号 
cat test.txt |grep ^u   找出以 u 开头的行内容 
cat test.txt |grep ^[^u]  输出非 u 开头的行内容 
cat test.txt |grep hat$   输出以 hat 结尾的行内容 
cat test.txt |grep -E "ed|at"  显示包含 ed 或者 at 字符的内容行 
find
使用实例: 
find . -name "*.log" -ls  在当前目录查找以.log 结尾的文件,并显示
find /root/ -perm 777   查找/root/目录下权限为 777 的文件 
find . -type f -name "*.log"  查找当目录,以.log 结尾的普通文件 
find . -type d | sort   查找当前所有目录并排序 
find . -size +100M  查找当前目录大于 100M 的文件 
locate
使用实例: 
locate /etc/sh 		搜索 etc 目录下所有以 sh 开头的文件 
locate pwd 		查找和 pwd 相关的所有文件 
Linux 的cp命令
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
参数:
     -a 或 --archive     此参数的效果和同时指定"-dpR"参数相同
     -b 或 --backup      删除、覆盖目的文件先备份,备份的文件或目录亦建立为符号链接,并指向源文件或目录链接的源文件或目录。假如没有加上这个参数,在复制过程中若遇到符号链接,则会直接复制源文件或目录
     -f 或 --force       强行复制文件或目录, 不论目的文件或目录是否已经存在
     -i 或 --interactive 覆盖文件之前先询问用户
     -l 或 --link        对源文件建立硬链接,而非复制文件
     -p 或 --preserve    保留源文件或目录的属性,包括所有者、所属组、权限与时间
     -P 或 --parents     保留源文件或目录的路径,此路径可以是绝对路径或相对路径,且目的目录必须已经丰在
     -r                  递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
     -R 或 --recursive   递归处理,将指定目录下的文件及子目录一并处理
     -s 或 --symbolic-link  对源文件建立符号链接,而非复制文件
     -S <备份字尾字符串> 或 --suffix=<备份字尾字符串> 用"-b"参数备份目的文件后,备份文件的字尾会被加上一个备份字符串。默认的备份字尾符串是符号"~"
     -u 或 --update      使用这项参数之后,只会在源文件的修改时间(Modification Time)较目的文件更新时,或是名称相互对应的目的文件并不存在,才复制文件
     -v 或 --verbose     显示执行过程
     -V <备份方式> 或 --version-control=<备份方式>  指定当备份文件时,备份文件名的命名方式,有以下3种:
                         1.numbered或t, 将使用备份编号,会在字尾加上~1~字符串,其数字编号依次递增
                         2.simple或never 将使用简单备份,默认的备份字尾字符串是~, 也可通过-S来指定
                         3.existing或nil将使用当前方式,程序会先检查是否存在着备份编号,若有则采用备份编号,若无则采用简单备份
     -x 或 --one-file-system  复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不复制,亦不处理位于其他分区的文件
     --help              显示在线帮助
     --sparse=<使用时机>  设置保存希疏文件的时机
     --version           显示版本

示例:
    .复制文件,只有源文件较目的文件的修改时间新时,才复制文件
     cp -u -v file1 file2

    .将文件file1复制成文件file2
     cp file1 file2

    .采用交互方式将文件file1复制成文件file2
     cp -i file1 file2

    .将文件file1复制成file2,因为目的文件已经存在,所以指定使用强制复制的模式
     cp -f file1 file2

    .将目录dir1复制成目录dir2
     cp -R file1 file2

    .同时将文件file1、file2、file3与目录dir1复制到dir2
   cp -R file1 file2 file3 dir1 dir2

    .复制时保留文件属性
     cp -p a.txt tmp/

    .复制时保留文件的目录结构
     cp -P  /var/tmp/a.txt  ./temp/

    .复制时产生备份文件
     cp -b a.txt tmp/

    .复制时产生备份文件,尾标 ~1~格式
     cp -b -V t   a.txt /tmp    
  
    .指定备份文件尾标    
     cp -b -S _bak a.txt /tmp
wc
  • 命令格式

    wc [可选参数] 文件名

  • 参数介绍

    -l 统计行数

    -c 统计字节数

    -w 统计单词数

    -L 打印最长行的长度

    -help 显示帮助的信息

    –version 显示版本信息

crontab 定时器配置

​ crontab 是 Unix 和 Linux 用于设置周期性被执行的指令。通过 crontab 命令,可以在固定间隔时间执行指定的系统指令或 shell 脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。
​ crontab 安装:

yum install crontabs 

服务操作说明:

service crond start   ## 启动服务 
service crond stop    ## 关闭服务 
service crond restart ## 重启服务 
service crond reload   ## 重新载入配置 
service crond status    ## 查看 crontab 服务状态: 
chkconfig crond --list  ## 查看 crontab 服务是否已设置为开机启动  
chkconfig crond on      ## 加入开机自动启动 

命令格式

crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
参数说明:
​ -u user:用来设定某个用户的 crontab 服务
​ file:file 是命令文件的名字,表示将 file 做为 crontab 的任务列表文件并载入 crontab。
​ -e:编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
​ -l:显示某个用户的 crontab 文件内容。如果不指定用户,则表示显示当前用户的 crontab 文件内容。
​ -r:删除定时任务配置,从 /var/spool/cron 目录中删除某个用户的 crontab文件,如果不指定用户,则默认删除当前用户的 crontab 文件。

​ -i:在删除用户的 crontab 文件时给确认提示。
命令示例:

crontab file [-u user] ## 用指定的文件替代目前的 crontab。  
crontab -l [-u user]  ## 列出用户目前的 crontab.  
crontab -e [-u user]  ## 编辑用户目前的 crontab. 

配置说明、实例

*****command
命令
  • 第 1 列表示分钟 1~59 每分钟用*或者 */1 表示

  • 第 2 列表示小时 0~23(0 表示 0 点)

  • 第 3 列表示日期 1~31

  • 第 4 列表示月份 1~12

  • 第 5 列标识号星期 0~6(0 表示星期天)

  • 第 6 列要运行的命令

    配置实例:

    */1 * * * * date >> /root/date.txt 
    每分钟执行一次 date 命令 
    
    30 21 * * * /usr/local/etc/rc.d/httpd restart  
    每晚的 21:30 重启 apache。  
    
    45 4 1,10,22 * * /usr/local/etc/rc.d/httpd restart  
    每月 1、10、22 日的 4 : 45 重启 apache。  
    
    10 1 * * 6,0 /usr/local/etc/rc.d/httpd restart  
    每周六、周日的 1 : 10 重启 apache。  
    
    0,30 18-23 * * * /usr/local/etc/rc.d/httpd restart  
    每天 18 : 00 至 23 : 00 之间每隔 30 分钟重启 apache。  
    
    23-7/1 * * * /usr/local/etc/rc.d/httpd restart  
    晚上 11 点到早上 7 点之间,每隔一小时重启 apache 
    
tail
tail -f      
	等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止

tail -F     
	等同于--follow=name  --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪

tailf        
	等同于tail -f -n 10(貌似tail -f或-F默认也是打印最后10行,然后追踪文件),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电

Shell编程
  1. Shell 参数传递

​ 脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… $0 表示当前脚本名称。

  • 特殊字符
字符作用
$#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数
$$脚本运行的当前进程 ID 号
$!后台运行的最后一个进程的 ID 号
$@与$*相同,但是使用时加引号,并在引号中返回每个参数。
$?显示最后命令的退出状态。 0 表示没有错误,其他任何值表明有错误。
  1. Shell 运算符

((a++))

$[a+b]

流程控制

  if condition1 
  then 
      command1 
  elif condition2  
  then  
      command2 
  else 
      commandN 
  fi 
  1. for
  for N in 1 2 3 
  do 
   echo $N 
  done 
  
  或 for N in 1 2 3; do echo $N; done 
  
  或 for N in {1..3}; do echo $N; done 
  for ((i = 0; i <= 5; i++)) 
  do 
   echo "welcome $i times" 
  done 
  
  或 for ((i = 0; i <= 5; i++)); do echo "welcome $i times"; done 
  1. while

    while expression 
    do 
    command … 
    done 
    
    --------------------
    
    i=1 
    while ((i<=3)) 
    do 
      echo $i 
      let i++ 
    done
    
    --------------------
    
    while true 
    do 
        command 
    done 
    
  2. case

    case 值 in 模式 1) 
        command1 
        command2 
        ... 
        commandN 
        ;; 模式 2) 
        command1 
        command2 
        ... 
        commandN 
        ;; 
    esac
    
  3. 函数

    shell脚本是从上往下执行的,所有函数在使用前必须定义,不然会报错(command not found),但会往下执行。

    [ function ] funname [()] 
    { 
        action; 
        [return int;] 
    } 
    
find批量删除空文件及空文件夹脚本

linux下批量删除空文件(大小等于0的文件)的方法

find . -name "*" -type f -size 0c | xargs -n 1 rm -f

用这个还可以删除指定大小的文件,只要修改对应的 -size 参数就行,例如:

find . -name "*" -type f -size 1024c | xargs -n 1 rm -f

就是删除1k大小的文件。(但注意不要用 -size 1k,这个得到的是占用空间1k,不是文件大小1k的)。

查询出所有的空文件夹

find -type d -empty

删除文件

列出搜索到的文件

find . -name "shuaige.txt" -exec ls {} ;  

批量删除搜索到的文件

find . -name "shuaige.txt" -exec rm -f {} ;

删除前有提示

find . -name "shuaige.txt" -ok rm -rf {} ; 

删除当前目录下面所有 test 文件夹下面的文件

 find . -name "test" -type d -exec rm -rf {} ;

删除文件夹下面的所有的.svn文件

find . -name '.svn' -exec rm -rf {} ;

注:

1.{}和之间有一个空格
2.find . -name 之间也有空格
3.exec 是一个后续的命令,{}内的内容代表前面查找出来的文件

linux 后台运行和关闭、查看后台任务
  1. &

    加载一个命令的最后,可以把这个命令放到后台执行

  2. ctrl + z

    可以将一个正在前台执行的命令放到后台,并且处于暂停状态。

  3. jobs

    查看当前有多少在后台运行的命令

    jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。

  4. fg

    将后台中的命令调至前台继续运行。如果后台中有多个命令,可以用fg %jobnumber(是命令编号,不是进程号)将选中的命令调出。

  5. bg

    将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出。

  6. kill

    • 法子1:通过jobs命令查看job号(假设为num),然后执行kill %num
    • 法子2:通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid

    前台进程的终止:Ctrl+c

  7. nohup

    如果让程序始终在后台执行,即使关闭当前的终端也执行(之前的&做不到),这时候需要nohup。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。关闭中断后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令)

防火墙端口
防火墙打开3306端口
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables status

防火墙端口关闭
netstat -anp | grep 3306

centos7中的防火墙改成了firewall,使用iptables无作用,开放端口的方法如下:

firewall-cmd --zone=public --add-port=80/tcp --permanent
返回success为成功
命令含义: 
--zone #作用域 
--add-port=80/tcp #添加端口,格式为:端口/通讯协议 
--permanent #永久生效

重启防火墙:
systemctl restart firewalld.service 

关闭防火墙:
systemctl stop firewalld.service 

查看监听(Listen)的端口
netstat -lntp

检查端口被哪个进程占用
netstat -lnp|grep 8080
chown

利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符

语法

chown [-cfhvR] [--help] [--version] user[:group] file...

参数

  • user : 新的文件拥有者的使用者 ID
  • group : 新的文件拥有者的使用者组(group)
  • -c : 显示更改的部分的信息
  • -f : 忽略错误信息
  • -h :修复符号链接
  • -v : 显示详细的处理信息
  • -R : 处理指定目录以及其子目录下的所有文件
  • –help : 显示辅助说明
  • –version : 显示版本

实例

将文件 file1.txt 的拥有者设为 users 群体的使用者 runoob :
chown runoob:users file1.txt
将目前目录下的所有文件与子目录的拥有者皆设为 users 群体的使用者 lamport :
chown -R lamport:users *
linux的文件权限解析

查看文件权限

[root@localhost logs]# ll
total 16
-rw-r--r--. 1 root root    0 Aug  6 19:12 2018-5-6.log
-rw-r--r--. 1 root root    0 Aug  6 19:13 2018-5-7.log
-rw-r--r--. 1 root root    1 Aug  6 19:13 2018-5-8.log
-rw-r--r--. 1 root root    0 Aug  6 19:15 2018-6-7.log
-rw-r--r--. 1 root root    0 Aug  6 19:17 2018-6-8.log
-rw-r--r--. 1 root root   79 Aug  6 20:39 aa.txt
drwxr-xr-x. 2 root root 4096 Aug  6 21:10 bin
-rwxr--r--. 1 root root   70 Aug  6 19:20 count.sh
[root@localhost logs]#

先解释rwx是什么意思
r:对文件是指可读取内容 对目录是可以ls
w:对文件是指可修改文件内容,对目录 是指可以在其中创建或删除子节点(目录或文件)
x:对文件是指是否可以运行这个文件,对目录是指是否可以cd进入这个目录

再解释-rwxr–r--是什么意思

文件类型属主(user)属组(group)其他用户
drwxr-xrw-
普通文件(-)目录(d)符号链接(l)756
  • r:读取权
  • w:写入权
  • x:执行权
  • -:无操作权限

数字授权

属主(user)属组(group)其他用户
rwxrwxrwx
421421421
[root@localhost logs]# ll
total 12
-rw-r--r--. 1 root root   79 Aug  6 20:39 aa.txt
drwxr-xr-x. 2 root root 4096 Aug  6 21:10 bin
-rwxr--r--. 1 root root   70 Aug  6 19:20 count.sh
[root@localhost logs]# chmod u-x count.sh
[root@localhost logs]# ll
total 12
-rw-r--r--. 1 root root   79 Aug  6 20:39 aa.txt
drwxr-xr-x. 2 root root 4096 Aug  6 21:10 bin
-rw-r--r--. 1 root root   70 Aug  6 19:20 count.sh
[root@localhost logs]# chmod u+x count.sh
[root@localhost logs]# ll
total 12
-rw-r--r--. 1 root root   79 Aug  6 20:39 aa.txt
drwxr-xr-x. 2 root root 4096 Aug  6 21:10 bin
-rwxr--r--. 1 root root   70 Aug  6 19:20 count.sh
[root@localhost logs]#

当前用户具备所有的权限,当前用户所属的组拥有可读可执行但是没有写的权限,其他用户可读可写但是没法执行

chmod 756 a.txt

非数字授权

chmod u=rwx,g=rx,o=rx a.txt

chmod g-rw haha.dat 表示将haha.dat对所属组的rw权限取消
chmod o-rw haha.dat 表示将haha.dat对其他人的rw权限取消

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值