echo $SHELL
echo $0
比如查看/etc/passwd文件可以获得用户使用的shell吗?
字符界面下输入 logout或exit命令 或 ctrl+d
haltsys命令一发出,就会立即把系统关闭掉。其优点是系统响应快,强迫性强,因此,该命令只适合于系统上只有一个用户的情况。如果系统上有多个用户在工作,一发出命令,这些用户就被迫退出系统,他们的进程也丢失了。操作方法是:以超级用户登录,输入haltsys,回车,系统显示关机信息时,关掉电源。
shutdown命令是一个用shell语言编写的程序,驻留在/etc目录中。它由超级用户在前台运行,自动执行wall命令,通知正在系统中工作的所有用户,系统将在指定的时间内停机,请做好准备工作,然后从系统中注销。当所有用户已从系统中注销或指定时间已到时,shutdown就执行kill命令把系统中除主控台外的所有进程都终止,接着执行haltsys命令使系统正常停机。
reboot命令是由系统管理员执行的停机程序,reboot实质上是和haltsys命令链接在一起的。reboot和haltsys的唯一区别是它在正常停机后不用按任意键,马上自动引导,重新启动系统。reboot特别适合系统管理员调试机器用。
useradd -m myname -g group -s /usr/bin/zsh
echo myname :123456 | chpasswd
-c comment用户说明
-d directory 指定用户主目录
-m 若用户的起始目录不存在则创建
-g group指定用户所属组
-s shell 指定用户使用的shell
-u uid为用户分配标识
默认为/home/username
passwd -l username
passwd -u username
userdel -r username
-r将用户目录下的文档一并删除。在其他位置上的文档也将一一找出并删除。
选项 | 说明 |
---|---|
-c <备注> | 修改用户账号的备注文字 |
-d <家目录> | 修改用户的家目录 |
-e <有效期限> | 修改账号的有效期限 |
-f <缓冲天数> | 修改在密码过期后多少天即关闭该账号 |
-g <群组> | 修改用户所属的群组,组必须存在 |
-G <附加群组> | 修改用户所属的附加群组 |
-l <账号名称> | 修改用户账号名称 |
-L | 锁定用户密码,使密码无效 |
-s |
修改用户登入后所使用的shell |
-u |
修改用户id |
usermod -l 新用户名 旧用户名
who -a
-A | 显示所有的进程,跟-e的效果相同 |
---|---|
-a | 显示现行终端机下的所有进程,包括其他用户的进程 |
-u | 显示当前用户的进程状态 |
-x | 通常与 a 这个参数一起使用,可列出较完整信息 |
-l | 较长、较详细的将该PID的信息列出 |
-j | 工作的格式(jobs format) |
-f | 把进程的所有信息都显示出来 |
-e | 表示显示所有继承 |
查看系统所有进程
ps -aux
USER:表示该进程属于哪个用户
PID:进程id
%CPU:该进程占用CPU资源的百分比
%MEM:该进程占用内存的百分比
VSZ:该进程使用掉的虚拟内存量 (Kbytes)
RSS:该进程占用的固定的内存量 (Kbytes)
TTY:该进程是在那个终端机上面运行,若与终端机无关,则显示?,另外,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:代表该进程目前的状态,主要的状态有:
R:该进程正在运行
S:该进程正在休眠,但可被某些信号(signal)唤醒
D:无法中断的休眠状态(通常为IO进程)
T:该进程已经停止
Z:僵死状态,该进程应该已经终止,但是其父进程却无法正常的终止它,造成zombie(疆尸)程序的状态
W:等待状态,等待内存的分配
<:高优先级的进程
N:低优先级的进程
START:该进程被触发启动的时间
COMMAND:该进程的实际指令
date
ls --help
man ls
info ls
Linux内核启动完成后,内核通过启动第一个用户进程(init进程)来启动其他用户的进程或服务,因此init是Linux系统中所有进程的父进程。
init进程将解析inittab文件,运行操作系统的配置脚本,对Linux系统进行初始化。这个解析与运行过程如下:
1.启动nfs服务
systemctl start nfs-server.service
2.设置开机自启动
systemctl enable nfs-server.service
3.停止开机自启动
systemctl disable nfs-server.service
4.查看服务当前状态
systemctl status nfs-server.service
5.重新启动某服务
systemctl restart nfs-server.service
查看系统开机启动的服务。
systemctl list-unit-files | grep enabled
pwd
touch 命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
vim
echo 123 > xxx
more less tail
# 显示文件31到45行
sed -n '31,45p' requirements.txt
# 显示1000行到3000行
cat requirements.txt| head -n 3000 | tail -n +1000
一、which
使用语法非常简单,可以显示命令本身路径以及命令的alias别名:
二、whereis
使用语法非常简单,可以显示该命令的所有所在位置:
find /etc -name “*.c”
tar -czf test.tar.gz test # 压缩
tar -xzvf test.tar.gz test # 解压
dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
if=文件名:输入文件名,默认为标准输入。即指定源文件。
of=文件名:输出文件名,默认为标准输出。即指定目的文件。
删除硬链接文件或者删除源文件任意之一,文件实体并未被删除
删除源文件,软连接文件依然存在,但是无法访问指向的源文件路径内容了
找出t开头的用户
cat /etc/passwd | grep -n "^t"
grep是一个逐行扫描指定文件或文件的程序,返回包含模式的行
pgrep(Process-ID Global Regular Expressions Print)意为查看当前正在运行的进程,并将与选择条件匹配的进程ID列出
groupadd g # 创建组:g
gpasswd -A t1 g # t1 成为组g 管理员
groups t1 # 查看t1 所在组
gpasswd -a t2 g # t2 成为组g 成员
gpasswd -d t2 g # 从g 中移除t2
groupdel g # 删除组
usermod username -g groupname //改变基本组,groupname或者gid都可
usermod username -G groupname //改变附加组,-G只能有一个附加组,想要多个附加组使用-a
gpasswd groupname
所以使用 gpasswd groupname 设定密码,就是让知道该群组密码的人可以暂时切换具备 groupname 群组功能的。类似sudo
Linux groupmod命令用于更改群组识别码或名称。
groupadd g
groupmod -n new_g g
递归改变文件的群组到new_g
chgrp -vR new_g test
setfacl命令可以用来细分linux下的文件权限。让某一个用户对某一个文件具有某种权限。
setfacl -m u:t1:rw- test # 给t1 rw
setfacl -m u:t3:rwx test # 给t3 rwx
getfacl test # 查看分配
chmod 修改权限
chown 修改用户属主,属组
umask umask决定了我们默认建立一个文件或者目录的默认权限。
SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行中有效
SGID可以对文件生效,也可以对目录生效,此处与SUID不同
目录有 SBIT 权限 除了root可以删除所有文件,普通用户拥有w权限也只能删除自己创建的文件,无法删除其他用户创建的文件
4 = SUID
2 = SGID
1 = SBIT
rwsrwxrw- 代表有setuid标志
rwxrwsrwx 代表有setgid标志
rwxrwxrwt 代表有stickybit标志
chmod 4777 代表设置uid
chmod 2777 代表设置gid
chmod 1777 代表设置stickybit标志