Linux实用命令(二)

系统环境

环境变量

# 设置全局环境变量
vi /etc/profile
# 使全局环境变量生效
source /etc/profile 或 . /etc/profile

# 设置用户环境变量
vi ~/.bash_profile
或
vi ~/.bashrc
# 使用户环境变量生效
source ~/.bash_profile 或 source ~/.bashrc
. ~/.bash_profile 或 . ~/.bashrc

alias

# 对于长或复杂的命令,可以设置命令别名
# 可以在全局或用户环境变量中设置,有效范围不同
alias 别名 = 命令

history

# 清空历史操作记录
history -c

# 执行 history 中记录的第N行
history
!N

ps

# 查看进程 t1
# 示例查看ssh连接的进程
# root       1835   1462  0 20:04 ?        00:00:00 sshd: root@pts/0
# 进程用户     pid   父pid                            进程的内容
ps -ef | grep t1

# 去除进程显示中的grep进程
ps -ef | grep t1 -v grep

kill(生产上慎重使用)

# 杀死进程,进程号为pid1 pid2 ...
kill -9 pid1 pid2 ...

# 一次杀掉某个关键字的所有进程
kill -9 $(pgref -f xxx)

netstat

# 查看 t1 进程的端口号
netstat -nlp | grep t1

# 每行的第四列即为 IP:PORT 表示对外服务的IP和端口号
# 示例 0.0.0.0:22
# 如果IP为 ::: 或 0.0.0.0 表示可以对任意ip提供服务
# 如果IP为127.0.0.1或localhost,表示只能在本机访问这个服务

案例:如何找一个服务的web地址?

# 首先根据服务名,找他的 pid
ps -ef | grep xxx

# 然后根据 pid找对应的 port
netstat -nlp | grep pid

# 然后访问 IP:端口号 即可

which

# 通过PATH寻找xxx命令在哪个文件夹
# echo $PATH 查看本机配置的环境变量
which xxx

ifconfig

# 查看ip
ifconfig

修改hostname

# 修改 /etc/hosts 文件
# 添加机器 IP 及 hostname
# IP HOSTNAME
vi /etc/hosts

telnet

# telnet命令常用来检测端口是否能连通
# 系统并未自带,需要自己安装
yum install -y telnet

# 测试端口
telnet IP PORT

chmod

# 改变文件或文件夹的读写执行权限,例如更改为777
chmod 777 xxx

# 递归改变文件夹的读写执行权限,例如更改为777
chmod -R 777 xxx

df

# 查看磁盘挂载情况
df -h

# 示例

# Filesystem      Size  Used Avail Use% Mounted on
# /dev/sda3        38G  3.7G   32G  11% /
# 磁盘路径         总大小 已使用  可用  使用百分比 挂载路径

# 一般 / 根目录下不会挂载太大

free

# 查看内存情况
free -m

# 示例

#              total       used       free     shared    buffers     cached
# Mem:          2966       1131       1834          0        105        783
#                                     剩余内存

top

# 主要查看 load average: 0.00, 0.00, 0.00
#            CPU负载     1min  5min  10min
# 按经验来说,如果 >10,就表明系统负载很高,开始卡顿     
top

crontab

# 修改系统定时执行任务
crontab -e

# 查看定时执行任务列表
crontab -l

# 示例
# 每隔2分钟,执行一次 xxx 命令/脚本
*/2 * * * * xxx

# 每隔10s,执行一次 xxx 命令/脚本
# cron 表达式只能控制到分钟,想控制到秒需要在 shell 中结合 sleep 实现
# 例如控制 10s,for 循环 6 次,每次执行完 xxx,sleep 10s
for((i=1;i<=6;i++))
do
	xxx
	sleep 10s
done

jps

  • jps 是 JDK 软件包自带的查看 java 进程的命令,使用前需要先安装好 JDK,详细安装步骤参见CentOS 6.5常用软件安装 中的JDK部分
  • 普通用户使用 jps 只能查看自己的进程,root 用户使用 jps 查看进程,非 root 用户的进程会显示 process information unavailable
  • jps 显示出的进程实际上是以文件形式保存在 /tmp/hsperfdata_用户名 目录下,文件名为 pid,文件内容为进程的相关信息
  • jps 查看进程如果出现 process information unavailable,有可能是进程残留信息,实际上已经被 kill 掉,使用 ps -ef | grep pid 查看是否真实存在即可
# 使用jps 查看 hadoop 用户启动的进程
[hadoop@hadoop001 hadoop]$ jps
6400 NameNode
6689 SecondaryNameNode
6792 Jps
6522 DataNode

# 使用 root 查看当前进程
[root@hadoop001 ~]# jps
6400 -- process information unavailable
6689 -- process information unavailable
6522 -- process information unavailable
6862 Jps

# 使用其他用户只能查看到自己启动的进程
[zhihan@hadoop001 ~]$ jps
6914 Jps

# jps实际上查看的是 /tmp/hsperfdata_用户名 目录下的信息
[hadoop@hadoop001 hsperfdata_hadoop]$ ll
total 96
-rw-------. 1 hadoop hadoop 32768 Jul  6 17:22 6400
-rw-------. 1 hadoop hadoop 32768 Jul  6 17:22 6522
-rw-------. 1 hadoop hadoop 32768 Jul  6 17:22 6689

后台运行

  • 测试中可以使用 nohup xxx & 后台运行xxx脚本,输出日志在当前目录的nohup.out文件
  • 生产环境上指定日志输出路径 nohup 脚本路径 >> log日志路径 2>&1 &

用户及用户组

useradd

# 创建用户,默认的家目录在 /home/用户名,还会创建一个和用户名同名的组,并且为该用户的主组
useradd 用户名

id

# 查看用户 id 和组 id
# 示例输出 uid=501(zhihan) gid=501(zhihan) groups=501(zhihan)
#                 用户名          用户主组       用户所属的所有的组
id 用户名

用户信息存放位置

# 用户信息存放在 /etc/passwd 中
# 示例    zhihan:x:501:501::/home/zhihan:/bin/bash
#      用户名  密码标识符  用户id  所属组id  用户描述  家目录  登录shell
cat /etc/passwd

# 如果不想让某个用户登录,可以修改登录 shell 为 /bin/false 或 /sbin/nologin
# 如果某个用户不能登录可以查看是否是登录 shell 的问题

# 用户组信息存放在 /etc/group
# 示例   zhihan:x:501:
#     组名  用户组口令(一般都为空)  用户组id 该组下的用户
cat /etc/group

userdel

# 删除用户,会删除在 passwd 中的记录,如果所属组下没有其他用户也会被一并删除
# 家目录还在,用户和用户组发生改变
userdel zhihan

使用场景

# 在使用 userdel 删除一个用户后,查看该用户的家目录可以发现用户和用户组变成了 id
# 示例  原来  drwx------. 4  zhihan  zhihan 4096 Jun 17 23:09 zhihan
#      现在  drwx------. 4  501  501 4096 Jun 17 23:09 zhihan
# 此时重新创建,会提示一个家目录已经存在的警告,并且提示没有从 skel 目录拷贝文件
useradd zhihan

# 如果在登录某个用户后,出现了-bash-4.1$ 开头的命令提示(一般类似于[zhihan@hadoop001 ~]$)
# 说明该用户家目录下的 .bash 开头的文件丢失
# 如果想使用该用户,需要从 skel 目录拷贝所有 .bash 开头的文件到该用户的家目录,即可恢复正常
cp /etc/skel/.bash* /home/zhihan

groupadd

# 添加组
groupadd 组名

usermod

# 给用户添加一个新组
usermod -a -G 组名 用户名

# 修改用户的主组
usermod -g 组名 用户名

# 修改用户家目录
usermod -d 新家目录 用户名
或直接修改/etc/passwd文件中的用户家目录信息

passwd

# 修改用户密码
passwd 用户名

su

# 切换用户,留在当前目录
su 用户名

# 切换用户,且切换到用户的家目录,且让环境变量文件生效
su - 用户名

给普通用户添加sudo权限

# 普通用户如果想拥有sudo的执行权限,需要编辑 /etc/sudoers文件,在其中给用户添加root权限
vi /etc/sudoers
# root行示例  root    ALL=(ALL)       ALL
# 如果给 zhihan 用户 sudo 权限,可以在下方添加一行
# 配置为一个有 sudo 权限且不需要输入密码的用户
# 修改完毕后需要 wq! 强制保存
zhihan ALL=(root) NOPASSWD:ALL

chown

# 改变xxx文件或文件夹的用户和用户组
chown 用户:用户组 xxx

# 递归改变文件夹的用户和用户组
chown -R 用户:用户组 xxx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值