linux基础命令集

--------------------------------------系统管理-------------------------------------
uname -a
hostname 主机名
hostnamectl
cat /etc/redhat-release #查看系统版本
timedatectl #查看日期时间
timedatectl list-timezones # 列出所有时区
timedatectl set-local-rtc 1 # 将硬件时钟调整为与本地时钟一致, 0 为设置为 UTC 时间
timedatectl set-timezone Asia/Shanghai # 设置系统时区为上海
date 或 date "+%Y-%m-%d %H:%M:%S" #查看时间
date -s "20180508 10:00:00" #设置时间
格式: %Y-%m-%d %H:%M:%S
echo "123" > test_date '+%Y-%m-%d %H:%M:%S'
cal #显示日期
reboot #重启系统
init 6 #重启系统
init 0 #关闭系统
poweroff #关闭系统
shutdown -h now #关闭系统
logout #注销系统
login
who #显示当前登入的用户
last #历史登录记录
sestatus #SELINUX 状态
getenforce #显示SELINUX状态
setenforce 0 #临时关闭SELINUX,永久关闭 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
ulimit -n 65535 # 设置进程打开最大文件数
ntpdate cn.pool.ntp.org #需要安装,更新系统时间,国内地址为:cn.pool.ntp.org 阿里 ntp1~ntp7.aliyun.com 7个
crontab -e/-l/-r #计划任务e编辑l查看r删除

          • 任务
            分 时 天 月 周
            /5 每5分钟执行一次
            5/15 5,20,35,50 每加15分钟执行一次
            23-7/1
            /usr/local/etc/rc.d/lighttpd restart
            晚上11点到早上7点之间,每隔一小时重启apache
            4 1,10,22 /usr/local/etc/rc.d/lig/httpd restart
            上面的例子表示每月1、10、22日的4 : 45重启apache。
            1 6,0 /usr/local/etc/rc.d/lig/httpd restart
            上面的例子表示每周六、周日的1 : 10重启apache。
            30 18-23 * /usr/local/etc/rc.d/lig/httpd restart
            上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache

echo -e "OK! \c" # -e 开启转义 \c 不换行 \n 换行,默认
'....' #原样输出
.... #先执行中间的命令
"...." # 变量引用
echo -e "\e[1;32m这些字有颜色.\e[0m"
echo -e "\e[COLOR1;COLOR2m 内容 \e[0m"
其中 COLOR1 和 COLOR2 是前景色和背景色,是你想用颜色显示的字符串。
COLOR1 1亮 2暗 4下划线 5闪烁 7背景
COLOR2 31红 32绿 33黄 34兰 35粉色 31-38
clear #清屏
alias 新的命令='原命令 -选项/参数' # 设置别名

journalctl -xe #查看日志
-------------------------------进程、系统信息管理-----------------------------------
ps -aux #进程状态
ps -le #进程状态
ps -aux | sort -rnk 4 | head -7 #找出当前系统内存使用量较高的进程
ps -aux | sort -rnk 3 | head -7 #找出当前系统CPU使用量较高的进程
sort -rnk 4 中(k代表从第几个位置开始,后面的数字4即是其开始位置,结束位置如果没有,则默认到最后;
n指代根据其数值排序;
r指代reverse,这里是指反向比较结果,输出时默认从小到大,反向后从大到小。)。
可以看到%MEM在第4个位置,根据%MEM的数值进行由大到小的排序。3 是%CPU的位置
ps -eo %mem,%cpu,comm --sort=-%mem | head -5
ps -aux|head -1|awk '{print $4,$11}';ps -aux | sort -rnk 4 |awk '{print $4,$11}'| head -5 #显示占用内存前5的进程
%MEM COMMAND
3.3 /usr/bin/python
1.9 /usr/bin/python
1.1 /usr/lib/polkit-1/polkitd
0.9 /usr/sbin/NetworkManager
0.5 /usr/sbin/rsyslogd

pidof 进程名 #--查看进程ID
kill -9 PID #-- 结束进程
killall 服务名 #--- 结束这个服务的所有进程
pkill 服务名 #结束进程
top # 动态进程
按大写M 在前面显示使用内存最多的5个
按大写P 在前面显示使用CPU最多的5个
top -b -n 1 |head -5

htop #进程界面管理
lsof abc.txt #显示开启文件abc.txt的进程
vmstat 1 5 #每秒显示一次,显示5此
dstat -tamp #系统性能的监控工具,需要yum安装
t: #时间
a: #一个缩写合集,包括CPU(-c), 磁盘IO(-d),网络流量(-n), Swap page in/out(-g), 系统的中断和上下文切换(-y)
如果用bond0绑定了两块网卡,bond0与eth0+eth1会重复算,需要把值劈一半,或者用-N bond0 这样单拧出来。
如果想监控不同磁盘,可以-D sda,sdb,total
m: #内存
p: #进程数 (在运行的,被阻塞的,新增的)
iostat -x 1 5 #安装sysstat,包括sar、sadf、mpstat、iostat、pidstat等。查看到系统IO状态信息
x #参数,输出更多详细信息
d #参数,显示设备(磁盘)使用状态
c #参数,查看部分cpu状态信息
k #参数,某些使用block为单位的列强制使用Kilobytes为单位
free -h #显示内存
w #查看当前系统的负载
uptime #系统运行时间和负载

--------------------------------------服务管理-------------------------------------
ntsysv # 需要安装 ,图形界面服务管理
chkconfig
service

systemctl命令 说明

systemctl status 显示 系统状态
systemctl 列出所有的系统服务
systemctl list-units 列出所有启动的服务
systemctl list-unit-files 列出所有已安装的服务
systemctl list-units –type=service –all 列出所有service类型
systemctl list-units –type=target –all 列出所有target类型
systemctl list-units --all | grep ssh 在所有的系统服务里找出SSH服务
systemctl list-unit-files | grep enabled 查看已启动的服务列表:

systemctl is-enabled httpd 查看httpd是否开机启动disabled为关闭 enabled为开启
Systemctl is-active httpd 查看httpd是否正在运行
systemctl mask httpd 禁用指定服务
systemctl unmask httpd 激活指用服务
systemctl enable httpd 设置服务开机启动
systemctl disable httpd 设置服务禁止开机启动
systemctl start httpd 开始服务
systemctl stop httpd 停止服务
systemctl restart httpd 重启服务
systemctl status httpd 查看服务状态

systemctl poweroff 系统关机
systemctl reboot 重新启动

--------------------------------------网络管理-------------------------------------
ifconfig #查看IP,安装net-tools 包
cat /etc/resolv.conf #查看NDS
netstat -rn #查看网关
ip addr show
ip route show
ping
dig #DNS解释,需要安装bind-utils
nslookup #需要安装bind-utils
traceroute #追踪数据传输路由状况。需要安装
route
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 #添加静态路由
route del 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 #删除

netstat -tulnp #显示TCP/UDP端口连接和进程名
mail #邮件管理,安装mailx 或sendmail
mail -s "test" [email protected] < /etc/passwd # 邮件主题test ,内容是passwd文件的内容,发送到[email protected]邮箱
echo "测试邮件" | mail -s "测试" [email protected]
tcpdump #抓包
D #列出可用于抓包的接口
i #指定需要抓包的接口
v或-vvvv #详细的信息
c #制定抓包的数量
XX #输出包的头部数据,会以16进制和ASCII两种方式同时输出
tcpdump -c 2 -q -XX -vvv -nn -i eth0 tcp dst port 22
可以给定的值有host/net/port/portrange。例如"host foo","net 128.3","port 20","portrange 6000-6008"。默认的type为host。
可以给定的值包括src/dst/src or dst/src and dst,默认为src or dst。例如,"src foo"表示源主机为foo的数据包,"dst net 128.3"表示目标网络为128.3的数据包,
"src or dst port 22"表示源或目的端口为22的数据包。

arp #查看arp
telnet IP #连接远程主机
wget -O 下载后改名
wget -O 123.txt http://1.1.1.1/456.txt 下载456.txt 后改名为123.txt
wget -c 断点续传

scp #Linux之间复制文件和目录
scp -P 10060 -r 本地目录 root@远程主机IP:目录 # 远程复制 使用SSH 10060 端口 把本地整个文件夹拷贝到远程主机,上传
scp root@远程主机ip:目录 本地目录 #把远程主机的文件或目录拷贝到本地

curl #浏览器
curl -Is www.163.com # 查看网站版本详细
ftp IP #默认21口 ,如果其他口 先ftp -->open ip 端口 -->
ssh -p 端口 用户名@IP #连接远程服务器
ssh root@IP "ls -l /tmp" #查看远程目录

lsof
选项参数:

+D<目录>     #递归列出目录下被打开的文件 
-u s         #列出login name或UID为 s的程序
  3) -c<进程名>     #列出指定进程所打开的文件
-i<条件>      #列出符合条件的进程。(4、6、协议、:端口、 @ip )
-n          -n<目录> 列出使用NFS的文件
lsof -i:80 #查看端口是否在监听
lsof -i #显示所有链接
lsof -itcp #显示tcp连接
lsof -i 6 #显示IPV6流量
lsof -u sunjimeng |more -20      #列出某个用户打开的所有文件相关的进程信息
iftop #网卡流量
ss -lntup|egrep "3306|80"
ss -lntup|egrep "nginx|mysql"

--------------------------------------磁盘管理-------------------------------------

一,分区管理
管理工具fdisk,sfdisk,cfdisk,parted,gdisk
fdisk -l #显示磁盘分区列表
fdisk /dev/sdb #磁盘/dev/sdb分区
子命令:管理功能
p: print, 显示已有分区;
n: new, 创建
d: delete, 删除
w: write, 写入磁盘并退出
q: quit, 放弃更新并退出
m: 获取帮助
l: 列表所分区id
t: 调整分区id
sfdisk
cfdisk #进入图形界面
parted #2T以上用这个命令分区
gdisk #GPT分区表用gdisk分区,MBR用fdisk
二,文件系统管理
1,文件系统分类
Linux文件系统: ext2, ext3, ext4(centos6中比较常见), xfs, swap
swap: 交换分区
光盘:iso9660
Windows:fat32, ntfs
Unix: FFS, UFS, JFS2
网络文件系统:NFS, CIFS
集群文件系统:GFS2(红帽的), OCFS2(oracle的)
是否支持日志功能:
日志型文件系统: ext3, ext4, xfs, ...
非日志型文件系统: ext2, vfat
用户空间的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat
2,创建文件系统格式化
mkfs.ext4 /dev/sdb1 #把/dev/sdb1格式化ext4文件系统
mkfs -t ext4 /dev/sdb1 # 同上
mkswap 磁盘分区 #创建交换分区
三,挂载分区
mount /dev/sdb1 /newdisk #挂载磁盘/dev/sdb1到/newdisk 这个目录下
mount /dev/cdrom /mnt/cdrom #挂载光盘,或/dev/sro
mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom #挂载ISO文件
mount /home/sunky/mydisk.iso /mnt/vcdrom #挂载ISO文件
mount -t cifs -o username=用户名,password=密码,vers=2.0 //IP/share /mnt/share #挂载win共享文件夹
mount –t ntfs-3g /dev/sdb1 /mnt/usb #挂载U盘,需要安装ntfs-3g,
wget https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2017.3.23.tgz
编译安装需要安装gcc gcc-c++
编译安装执行:./configure && make && make install
umount /dev/cdrom #卸载光盘
umount /dev/sdb1 #卸载USB
umount /mnt/share # 卸载windows共享
swapon 磁盘分区 #挂载交换分区
swapoff 磁盘分区 #禁用交换分区
设置开机自动挂载,编辑/etc/fstab 文件增加挂载命令。。
//ip/共享目录名 /挂载位置 cifs username=someone,password=someone,vers=2.0,rw 0 0 挂载windows共享
/dev/hdb1 /home/new ext4 default 0 0 挂载硬盘
/dev/cdrom /mnt/cdrom iso9660 default 0 0 挂载光驱
df -h #查看磁盘信息,分区大小以G显示
df -Th # -T 显示文件系统
du -h 目录 #查看目录占用空间
lsblk # 列出分区
lsblk -f # 列出文件系统

添加新硬盘不需要重启
ls /sys/class/scsi_host/ #查看主机总线号
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

--------------------------------------文件目录管理-------------------------------------

一,目录处理命令

ls: 列出目录
ls -l #显示详细信息
ls -al #显示隐藏的文件
ls /var/log/ | wc- l #统计文件夹的文件数
ls *.bak | xargs rm -rf #删除所有.bak文件
wc -lc 文件名 #统计文件的行数和字节

ll : 和 ls -l 相同

cd:切换目录

pwd:显示目前的目录

mkdir:创建一个新的目录
mkdir 目录1 目录2 #创建多个目录
mkdir -p /a/b/c #创建层次目录

rmdir:删除一个空的目录
rmdir -p /a/b/c # 删除层次空目录
rmdir 目录 #删除空目录

cp: 复制文件或目录
cp -r dir1 dir2 #复制目录

rm: 移除文件或目录
rm -rf 目录 #危险慎用
rm -f 文件 #删除文件不提示
rm -f !(文件1|文件2|文件3) #除文件123外删除其他文件
rm -f ls | grep -v"aa" #aa文件除外删除其他

mv:移动文件或目录
mv -f 源文件 目标文件 #强制移动,会覆盖

ln:创建文件或文件夹链接
ln 源位置 目的位置 #硬链接
ln -s 源位置 目的位置 #软链接,就是快捷方式,
file : 判断文件类别
file 文件名
vim :文本编辑
G #光标移动最后一行
gg #改变移动第一行
n<回车> #n=第几行,光标移动到第n行
#数字0 把光标移动到当前行的开头
$ #把光标移动到当前行的结尾
x #向后删除字符
X #向前删除字符
yy #复制一行
nyy #复制n行,复制光标开始向下共n行
p #小写p ,粘贴到光标的下一行
P #大写P ,粘贴到光标的上一行
dd #删除行
ndd #删除从光标开始向下共n行
u # 滚回上一个操作
d1G #删除当前行至第一行
dG #删除当前行至最后一行
d0 #删除当前光标文本至行首
d$ #删除当前光标文本至行尾
:set nu #显示行号
:set nonu #取消行号
:q! #退出,i 强制
:wq! #保存

二,文件操作命令

cat : 显示文件内容
tree :目录结构
touch 文件名 #创建空白文件
touch -t 0712250000 file1 #修改一个文件或目录的时间戳 - (YYMMDDhhmm)
more : 一页一页翻看
less : 一页一页翻看
head : 查看文件前几行
head -n 10 文件 #查看前10行
tail : 查看后几行
tail -n 20 文件 #查看后20行
tail -f /var/log/MESSAGES #事实查看日志输出
diff : 文件比较
diff -c 文件1 文件2 #比较两个文件的差异
diff --brief 文件1 文件2 #比较两个文件是否相同,不相同显示differ
dd -if 输入的文件名
of 输出的文件名
bs 设置快的大小
count 要复制快的个数
例:如我们可以用 dd命令从 命令从 /dev/zero设备文件中取出一个大小为 560MB的数据块
dd -if=/dev/zero of=test.file conut=1 bs=560M
把光盘文件打包成ISO文件
dd -if /dev/cdrom of=cd.iso
dd if=/dev/cdrom of=/home/sunky/mydisk.iso

mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/mydir
把 目录和文件打包成ISO文件

tar
cvf 压缩后的文件名 需要压缩的文件或文件夹 #压缩文件
xvf 文件名.tar #解压文件
zxvf 文件名.tar.gz # 解压 .tar.gz 文件
jxvf 文件名.tar.bz2 #解压 .tar.bz2文件 需要安装 yum -y install bzip2
Zxvf FileName.tar.Z #解压.tar.Z
rf a.tar 文件名 #向a.tar文件里追加文件
tf a.tar #显示压缩包里的文件
C 目的目录 #解压到指定目录

1、.tar 用 tar –xvf 解压
2、
.gz 用 gzip -d或者gunzip 解压
3、.tar.gz和.tgz 用 tar –xzf 解压
4、.bz2 用 bzip2 -d或者用bunzip2 解压
5、
.tar.bz2用tar –xjf 解压
6、.Z 用 uncompress 解压
7、
.tar.Z 用tar –xZf 解压
8、.rar 用 unrar e解压
9、
.zip 用 unzip 解压
zip #需要安装
zip a.zip *.jpg #将所有.jpg的文件压缩成一个zip包
unzip a.zap -d /data/a #解压

find
find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录
find / -user user1 搜索属于用户 'user1' 的文件和目录
find /home/user1 -name *.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件
find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
find / -name *.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限
find / -xdev -name *.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备

grep
grep -v "#" 源文件 > 过滤后的文件 # 去掉文件里面的注释行
grep -v "#" /etc/zabbix/zabbix_server.conf |grep -v "^$" #去掉注释和空行
grep -E 'abc|123' #匹配多个搜索内容
C #统计行数 =wc -l
n #不换行

sed
sed -n '5,10p' /etc/passwd 查看中间5到10行的内容
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
sed '/^ *$/d file 删除文件中的空行。
awk

三,文件权限

chown -R 用户名:用户组名 文件夹 #修改所有者
chown 用户名:用户组名 文件
chmod -R 775 文件夹 #修改权限
chmod 711 文件名
setfacl -m u:ftp:rwx “目录或文件” #设置ftp用户对这个目录或文件的权限
getfacl “目录或文件” #查看权限
chattr +i fiel1 #锁定文件
chattr -i file1 #解锁文件
lsattr #查看文件扩展属性。

--------------------------------------用户和用户组管理-------------------------------------

groupadd group_name 创建一个新用户组
groupadd -g 344 group_name 指定新建工作组的id
groupdel group_name 删除一个用户组
groupmod -n new_group_name old_group_name 重命名一个用户组
useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 "admin" 用户组的用户
useradd user1 创建一个新用户
userdel -r user1 删除一个用户 ( '-r' 排除主目录)
usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性
-c 加注释 -g 指定组 -G 指定附加组 -d 指定用户目录 -u 指定ID -s 指定使用shell (/bin/nologin 不允许登陆)
passwd 修改口令
passwd user1 修改一个用户的口令 (只允许root执行)

--------------------------------------软件安装卸载管理-------------------------------------
一,源码编译安装(经典)
./configure --prefix=/usr/local 指定目录安装
make clean 清除之前留下的文件
make 编译
make install 安装

二,yum 安装
yum install XXX --enablerepo=YYY # XXX=软件名 YYY=YUM仓库 指定仓库下载软件安装
yum update 更新已经安装的所有软件
yum install ftp 安装ftp
yum update ftp 更新ftp
yum remove ftp 卸载ftp
yum search ftp 搜索ftp
yum repolist all 显示所有仓库
yum repolist enable 可用仓库
yum clean all 清理本地缓存 常用
yum makecache 构建缓存

三,rpm 安装
rpm -ivh 安装
rpm -uvh 升级
rpm -e 卸载
rpm -qa | grep ftp 查看ftp 是否安装

--------------------------------------常用配置文件-------------------------------------

/etc/redhat-release 系统版本
/etc/fstab 开机自动挂载文件
/etc/inittab 设定运行级别文件
/etc/hostname 主机名
/etc/syscoonfig/network-scripts/ifcfg-enoxxxxxx 网卡配置文件
/etc/yum.repos.d/CentOS-Base.repo yum源
/etc/passwd 密码文件
/etc/shadow 密码加密文件
/etc/group 用户组
/proc/cpuinfo CPU信息, grep -c 'processor' /proc/cpuinfo 查询几个cpu
/etc/resolv.conf 配置DNS #nameserver IP’的格式
/etc/sysconfig/network 主机名配置文件 # HOSTNAME=localhost.localdomain 修改成你想要的主机名
/etc/services 服务端口
/etc/login.defs 系统口令策略文件
ASS_MAX_DAYS 90 #新建用户的密码最长使用天数
PASS_MIN_DAYS 0 #新建用户的密码最短使用天数
PASS_WARN_AGE 7 #新建用户的密码到期提前提醒天数
PASS_MIN_LEN 9 #最小密码长度9
/etc/locale.conf 语言设置
LANG=zh_CN.utf8 //中文
LC_MESSAGES=en_US.utf8 //英文

猜你喜欢

转载自blog.51cto.com/yxcwy/2147016