linux common cmd
命令的帮助信息
man + 命令;查看命令手册 q退出
命令 + --help/-h ;查看具体使用参数
linux系统的目录
/ 根目录
/usr Unix System Resource是系统核心所在,包含了所有的共享文件
/home 用户的家目录
/etc 配置文件目录
查看版本-Ubuntu
cat /proc/version
目录操作
cd 切换
ls 列出目录下的内容
-l 以列表方式
-a 所有文件,包含隐藏文件 .name
cd …/ 上级目录
pwd 打印当前目录
mkdir 创建一个文件夹
mkdir -p 常见多级目录
rmdir 删除一个空文件夹
rm -rf folder 强制删除文件夹及其下的文件,非空也删
touch file.c 创建一个文件
vim file.c 编辑文件
basename 获取路径 的文件名,如/etc/hosts —>hosts
dirname 获取路径的目录名,如/etc/hosts—>/etc
ps -ef | grep -i “xxx” 查看名字包含xxx的进程;
kill -9 pid 根据id杀掉进程
pkill xxx 根据名称杀掉进程
netstat -tnlp 统计监听tcp socket的应用程序
获取脚本的位置参数
./test.sh /etc/hosts
#在脚本内部获取位置参数
# $1, $2,.....${10} 获取位置参数
# $# 所有参数个数
# $@ 所有的参数
# ‘’ 表示字符串
#
xsync示例:
xsync.sh
pcount=$# #所有参数个数,赋值不能有空格
if((pcount==0)); then
echo no args;
exit; #没有参数,则退出
fi
#2 获取文件名称
p1=$1 #获取参数名字
fname=`basename $p1` #获取文件名字,反撇号作为一个整体
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd` #获取当前目录,并打印
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5循环
for (( host=7; host<10; host++)); do
echo -------slave$host -----------------------
rsync -rvl $pdir/$fname $user@slave$host:$pdir
done
xsync /etc/hosts
将/etc/hosts同步到所有的从节点
查找的命令
输入 部分命令+ tabtab 提示
find ./ -name "folder*" # 查抄文件
cat test.c | grep "main" #匹配字符串 的行
监听端口的进程
sudo lsof -i:3306
netstat -alnp|grep 3306
查看所有的进程
ps -aux |grep "redis"
查看资源占用
top -o %CPU #按照CPU的占用率,从大到小排序
top -O #打印所有的字段
查看ip
ifconfig
快捷键
Ctrl+Alt+t 打开一个命令窗
Ctrl+Shift+t 在当前的窗口,打开一个窗口
更改linux系统名字
sudo vim /etc/hostname
#input a name
#shift+zz
reboot #重启
定义ip与域名的映射
通过ip地址连接一个主机比较麻烦,这里定义ip与域名的映射关系,然后linux系统就可以通过域名来访问对应的ip地址
sudo vim /etc/hosts
#编辑
192.168.245.216 lauf1-host
#shift+zz
#测试
ping lauf1-host
#直接使用域名 访问对应的IP地址
网络管理工具
sudo apt-get install network-manager
sudo service network-manager start
nmtui #图形界面
管理用户
- 添加用户
sudo useradd username -d /home/xxx -m -u 1002 -g groupname -s /bin/bash
-d,指定家目录
-m,创建家目录 必须
-u,userid
-g,group所属组
-s,登录后使用的shell 建议
改变当前用户名:
#切换到root账户
sudo -s
#修改用户名
usermod lauf -l lauf1 -d /home/lauf1 -m
#-l 新的登录用户名
#-d 新的家目录
#-m 迁移旧的家目录到新的家目录
#为新用户名创建密码,同新用户创建密码一样
passwd lauf1
#若登录的用户名未更改,但是系统shell下已经更改,则需
#sudo vim /etc/passwd 将家目录前的旧用户名更改一下
- 为用户设置密码
sudo passwd tom
#查看所有用户
sudo cat /etc/passwd #用户信息
sudo cat /etc/shadow #密码信息
sudo cat /etc/group #组信息
- 为用户增加sudo权限
sudo usermod -a -G adm username #sudo赋予当前用户部分root权限
sudo usermod -a -G sudo username
#或者
sudo vim /etc/sudoers
#在root下添加
tom ALL=(ALL:ALL) ALL
#命令前加sudo 获取root权限
#或者
sudo vim /etc/passwd
#将用户的uid 改为0
#之后登录就直接具有root权限
- 删除用户
sudo userdel -r username
- 切换用户
sudo -s #切换到超级权限,但是不切路径
sudo -i #切换超级权限,同时切换路径
su tom #切换到tom用户,但是不切路径
su - tom #切换tom 用户,同时切换路径
创建用户时,如果忘记添加-m指定家目录——则删除用户,重新创建
创建用户时,若不指定组名则默认会创建一个和用户名同名的组名
用户信息保存在 /etc/passwd 文件中,可通过 cat /etc/passwd查看,里面存放的用户信息,由 6 个:组成的 7 个信息,分别是:
用户名 : 密码(x,表示加密的密码) : UID(用户标识) : GID(组标识) : 用户全名或本地帐号家目录 : 登录使用的 Shell,就是登录之后,使用的shell,ubuntu 默认是 bash
- root账户的ssh登录
sudo vim /etc/ssh/sshd_config
PermitRootLogin yes
7.查看用户信息
id tom #查看用户id,组id等
who #所有登录的用户
whoami #当前登录的用户
- 修改用户的组
# 修改用户的主组(passwd 中的 GID)
usermod -g 组 用户名
# 修改用户的附加组(group文件中的最后一列)
usermod -G 组 用户名
# 修改用户登录Shell
usermod -s /bin/bash 用户名
- 不同的用户共享/usr/local下的hadoop、jdk等软件
usr,通用系统资源
所以在已经安装好软件的情况下,可以为不同的用户进行简单配置,就可以使用
组管理
groupadd 组名 添加组
groupdel 组名 删除组
cat /etc/group 确认组信息
chgrp -R 组名 文件/目录名 递归修改文件/目录的所属组
文件权限管理
d rwxr-xr-x 21 root root 4.0k 12月 21 22:22 var
类型 权限 硬链接数 所属用于 所属用户组 大小 时间 名称
-普通文件;
d目录文件;
b块特殊文件;
l符号链接;
f命名管道;
s套接字文件
rwx–rwx–rwx
u(ser)–g(roup)–o(ther)
read权限 -r- 4
write写权限 -w- 2
execute可执行 -x- 1
权限设置仅对一般用户,对root无用
例子:
# 修改文件|目录的拥有者
sudo chown -R 用户名 文件名|目录名
# 修改文件|目录的组
sudo chgrp -R 组名 文件名|目录名
# 递归修改文件权限
sudo chmod -R 755 文件名|目录名
# 对拥有者添加执行权限
sudo chmod u+x 文件名
# 对组删除写权限
sudo chmod g-w 文件名
# 令其他用户的权限为可读
sudo chmod o=r 文件名
# 对所有成员都加上读取权限
sudo chmod a+r 文件名
当拥有者权限和组权限冲突时,已拥有者权限为准
ubuntu18.04更改时区
sudo tzselect
Asia,China,Beijing
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date查看时间
退出登录,再次登录 查看时间
E: unable to locate package xxx
解决: sudo apt update