linux c模拟ls命令详解

代码如下:

/*
 模拟ls命令,实现参数-tariRl.有些代码重复出现,可改进
 可以在该程序的基础上增加参数,该程序思路清晰,容易扩展
 */
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/stat.h>
#include<dirent.h>
#include<sys/ioctl.h>
#include<pwd.h>
#include<grp.h>
#define LL (1<<0)  /*带l参数标志*/
#define IL (1<<1)  /*带i参数标志*/
#define RU (1<<2)  /*带R参数标志*/
#define TL (1<<16) /*带t参数标志*/
#define AL (1<<17) /*带a参数标志*/
#define RL (1<<18) /*带r参数标志*/
#define LENGTH 500 /*字符串最大长度*/
#define MAX_FILE_COUNT 500/*文件列表最大长度*/
/*函数声明*/
void error(char* error_message,int line);
void display(struct stat* stalist,char (*namelist)[LENGTH],int n,int mode);
int file_list(char* path,struct stat* stalist,char (*namelist)[LENGTH],int mode);
void display_simply(char (*namelist)[LENGTH],int n);
void display_LL(struct stat * stalist,char (*namelist)[LENGTH],int n);
void display_IL(struct stat * stalist,char (*namelist)[LENGTH],int n);
void display_LL_IL(struct stat * stalist,char (*namelist)[LENGTH],int n);
void display_RU(struct stat* stalist,char (*namelist)[LENGTH],int n,int mode);
void display_RU_LL(struct stat * stalist,char (*namelist)[LENGTH],int n,int mode);
void display_RU_IL(struct stat* stalist,char (*namelist)[LENGTH],int n,int mode);
void display_RU_IL_LL(struct stat * stalist,char (*namelist)[LENGTH],int n,int mode);
/*主函数*/
int main(int argc,char **argv)
{
    int i,j;
    /*mode的前16个位用来标志那些能影响显示的参数,16位之后的位用来标志不影响输出格式的参数。这个程序只用到了0-3位,16-18位,如果要在该程序的基础上增加参数,可以用其他没有使用的位。
    mode的第0位为1表示带l参数,mode的第1位为1表示带i参数,mode的第2位为1表示带R参数,mode的第16位为1表示带t参数,mode的第17位为1表示带a参数,mode的第18位为1表示带r参数*/
    int mode=0;
    char error_message[LENGTH]={0};/*错误信息*/
    char path[LENGTH]={0};/*路径*/
    struct stat stalist[MAX_FILE_COUNT];/*文件详细信息数组*/
    char  namelist[MAX_FILE_COUNT][LENGTH];/*文件名数组*/
    int flag=0;/*判断是否指定了目录*/
    int count;/*文件个数*/
    /*解析参数*/
    for(i=1;i<argc;i++){
        if(argv[i][0]=='-'){/*如果是选项参数*/
     for(j=1;j<strlen(argv[i]);j++){
  if(argv[i][j]=='l')
      mode=mode|LL;
  else if(argv[i][j]=='i')
      mode=mode|IL;
  else if(argv[i][j]=='R')
      mode=mode|RU;
  else if(argv[i][j]=='r')
      mode=mode|RL;
  else if(argv[i][j]=='a')
      mode=mode|AL;
  else if(argv[i][j]=='t')
      mode=mode|TL;
  else{
      snprintf(error_message,LENGTH,"no option of %c",argv[i][j]);
      error(error_message,__LINE__);
  }     
     }
 }else{/*参数为目录或文件*/
     if(flag==1)
  error("can not specify more then two dir or file",__LINE__);
     else
  flag=1;
            if(argv[i][0]!='/'){/*相对路径*/
  strcat(path,get_current_dir_name());
  strcat(path,"/");
  strncat(path,argv[i],strlen(argv[i]));
     }else/*绝对路径*/
  strcpy(path,argv[i]);
 }
    }
    if(flag==0)/*未指定任何目录或文件,则使用默认当前目录*/
 strcat(path,get_current_dir_name());
    /*根据mode获取指定目录下的文件*/
    count=file_list(path,stalist,namelist,mode);

/*根据mode显示文件*/
    display(stalist,namelist,count,mode);
    return 0;
}
/*获取文件列表*/
int file_list(char* path,struct stat* stalist,char (*namelist)[LENGTH],int mode)
{
    int i=0,index,j,k;
    DIR *dir;
    struct dirent *ptr;
    char str[LENGTH];
    char nametemp[LENGTH];
    struct stat statemp;
    if(stat(path,&stalist[0])<0){
// puts(path);
 error("the specify file is not exist",__LINE__);
    }
    if(S_ISDIR(stalist[0].st_mode)){/*如果该路径指向的是一个目录*/
        if((dir=opendir(path))==NULL){/*打开目录*/
     sprintf(str,"can not open %s",path);
     error(str,__LINE__);
 }
        chdir(path);/*改变当前工作目录到path*/
        i=0;
 while((ptr=readdir(dir))!=NULL){/*依次读取目录下的所有文件*/
     if(ptr->d_name[0]=='.' && !(mode & AL))/*忽略隐藏文件*/
  continue;
     /*按字母顺序插入到stalist数组及namelist数组*/
     for(j=i;j>0;j--){
  if(strcmp(ptr->d_name,namelist[j-1])>0)
      break;
     }
     for(k=i;k>j;k--){
  strcpy(namelist[k],namelist[k-1]);
  stalist[k]=stalist[k-1];
     }
            strcpy(namelist[j],ptr->d_name);
            stat(ptr->d_name,&stalist[j]);
     i++;
     if(i==MAX_FILE_COUNT)
  error("file count beyond MAX_FILE_COUNT",__LINE__);
 }
 closedir(dir);
    }else{
 j=strlen(path)-1;
 while(j>=0 && path[j]!='/'){
     j--;
 }
 if(j<0)
     error("path error",__LINE__);
 j++;
 k=0;
        while(path[j]){
     namelist[0][k]=path[j];
            j++;
      k++;
 }
        namelist[0][k]=0;
        return 1;
    }
    if(mode & TL){/*按文件修改时间排序*/
 for(j=0;j<i;j++){
     index=j;
     for(k=j+1;k<i;k++)
  if(stalist[index].st_mtime<stalist[k].st_mtime){
      index=k;
  }
     statemp=stalist[j];
     stalist[j]=stalist[index];
     stalist[index]=statemp;
     strcpy(nametemp,namelist[j]);
     strcpy(namelist[j],namelist[index]);
     strcpy(namelist[index],nametemp);
 }
    }
    if(mode & RL){/*反序排列*/
 for(j=0;j<i/2;j++){
     strcpy(nametemp,namelist[j]);
     strcpy(namelist[j],namelist[i-j-1]);
     strcpy(namelist[i-j-1],nametemp);
     statemp=stalist[j];
     stalist[j]=stalist[i-j-1];
     stalist[i-j-1]=statemp;
 }
    }
    return i;
}
/*根据mode选择不同的函数进行显示*/
void display(struct stat* stalist,char (*namelist)[LENGTH],int n,int mode)
{
    /*使mode的高16位为0*/
    int m = mode & ((1<<16)-1);
    switch(m){
 case 0:
     display_simply(namelist,n);
     break;
 case 1:
     display_LL(stalist,namelist,n);
     break;
 case 2:
     display_IL(stalist,namelist,n);
     break;
 case 3:
     display_LL_IL(stalist,namelist,n);
     break;
 case 4:
     display_RU(stalist,namelist,n,mode);
     break;
 case 5:
     display_RU_LL(stalist,namelist,n,mode);
     break;
        case 6:
     display_RU_IL(stalist,namelist,n,mode);
     break;
 case 7:
     display_RU_IL_LL(stalist,namelist,n,mode);
     break;
    }
}
/*不带显示选项,简单显示文件名*/
void display_simply(char (*namelist)[LENGTH],int n)
{
    int i,maxlength=0,cols;
    struct winsize ts;
    for(i=0;i<n;i++)
 if(strlen(namelist[i])>maxlength)
     maxlength=strlen(namelist[i]);
    /*获取终端的大小*/
    ioctl(STDIN_FILENO,TIOCGWINSZ,&ts);
    cols=ts.ws_col;
    cols/=(maxlength+1);
    //lines=ts.ws_row;
    for(i=0;i<n;i++){
       if(i!=0 && i%cols==0)
    puts("");
       printf("%*s",-(maxlength+1),namelist[i]);
    }
    putchar('\n');
}
/*-l 参数,显示详细文件信息*/
void display_LL(struct stat * stalist,char (*namelist)[LENGTH],int n)
{
    int i,mode;
    char* str;
    for(i=0;i<n;i++){
        mode=stalist[i].st_mode;
        if(S_ISDIR(mode))
     printf("d");
 else
     printf("-");
 if(mode & (1<<8))
     printf("r");
 else
     printf("-");
        if(mode & (1<<7))
     printf("w");
 else
     printf("-");
        if(mode & (1<<6))
     printf("x");
 else
     printf("-");
        if(mode & (1<<5))
     printf("r");
 else
     printf("-");
        if(mode & (1<<4))
     printf("w");
 else
     printf("-");
        if(mode & (1<<3))
     printf("x");
 else
     printf("-");
        if(mode & (1<<2))
     printf("r");
 else
     printf("-");
        if(mode & (1<<1))
     printf("w");
 else
     printf("-");
        if(mode & (1<<0))
     printf("x");
 else
     printf("-");
 printf(" %-3d",stalist[i].st_nlink);
 printf(" %-6s",getpwuid(stalist[i].st_uid)->pw_name);
 printf(" %-6s",getgrgid(stalist[i].st_gid)->gr_name);
 printf(" %-10d",stalist[i].st_size);
 str=ctime(&stalist[i].st_mtime);
 str[strlen(str)-2]=0;
 printf(" %s",str);
 printf(" %s\n",namelist[i]);
    }
}
/*-i 参数,显示文件名及节点号*/
void display_IL(struct stat* stalist,char (*namelist)[LENGTH],int n)
{
    int i,maxlength=0,cols;
    struct winsize ts;
    for(i=0;i<n;i++)
 if(strlen(namelist[i])>maxlength)
     maxlength=strlen(namelist[i]);
    /*获取终端的大小*/
    ioctl(STDIN_FILENO,TIOCGWINSZ,&ts);
    cols=ts.ws_col;
    cols/=(maxlength+9);
    //lines=ts.ws_row;

for(i=0;i<n;i++){
       if(i!=0 && i%cols==0)
    puts("");
       printf("%-8d ",stalist[i].st_ino);
       printf("%*s",-(maxlength+1),namelist[i]);
    }
    putchar('\n');  
}
/*-li 参数,显示详细文件信息和节点号*/
void display_LL_IL(struct stat * stalist,char (*namelist)[LENGTH],int n)
{
    int i,mode;
    char* str;
    for(i=0;i<n;i++){
        printf("%-8d ",stalist[i].st_ino);
        mode=stalist[i].st_mode;
        if(S_ISDIR(mode))
     printf("d");
 else
     printf("-");
 if(mode & (1<<8))
     printf("r");
 else
     printf("-");
        if(mode & (1<<7))
     printf("w");
 else
     printf("-");
        if(mode & (1<<6))
     printf("x");
 else
     printf("-");
        if(mode & (1<<5))
     printf("r");
 else
     printf("-");
        if(mode & (1<<4))
     printf("w");
 else
     printf("-");
        if(mode & (1<<3))
     printf("x");
 else
     printf("-");
        if(mode & (1<<2))
     printf("r");
 else
     printf("-");
        if(mode & (1<<1))
     printf("w");
 else
     printf("-");
        if(mode & (1<<0))
     printf("x");
 else
     printf("-");
 printf(" %-3d",stalist[i].st_nlink);
 printf(" %-6s",getpwuid(stalist[i].st_uid)->pw_name);
 printf(" %-6s",getgrgid(stalist[i].st_gid)->gr_name);
 printf(" %-10d",stalist[i].st_size);
 str=ctime(&stalist[i].st_mtime);
 str[strlen(str)-2]=0;
 printf(" %s",str);
 printf(" %s\n",namelist[i]);

}
}
/*-R 参数,简单显示所有文件,包括目录下面的子目录*/
void display_RU(struct stat* stalist,char (*namelist)[LENGTH],int n,int mode)
{
    int i,count;
    char path[LENGTH]={0},temp[LENGTH]={0};
    struct stat sta[MAX_FILE_COUNT];
    char name[MAX_FILE_COUNT][LENGTH];
    puts(get_current_dir_name());
    display_simply(namelist,n);
    putchar('\n');
    strcpy(path,get_current_dir_name());

for(i=0;i<n;i++){
        if(strcmp(namelist[i],".")==0 || strcmp(namelist[i],"..")==0)
          continue;
 if(S_ISDIR(stalist[i].st_mode)){
     strcpy(temp,path);
     strcat(path,"/");
     strcat(path,namelist[i]);
     count=file_list(path,sta,name,mode);
     display_RU(sta,name,count,mode);
            strcpy(path,temp);
 }
    }
}
/*-Rl 参数,显示所有文件,包括目录下面的子目录的详细信息*/
void display_RU_LL(struct stat * stalist,char (*namelist)[LENGTH],int n,int mode)
{
    int i,count;
    char path[LENGTH]={0},temp[LENGTH]={0};
    struct stat sta[MAX_FILE_COUNT];
    char name[MAX_FILE_COUNT][LENGTH];
    puts(get_current_dir_name());
    display_LL(stalist,namelist,n);
    putchar('\n');
    strcpy(path,get_current_dir_name());

for(i=0;i<n;i++){
 if(strcmp(namelist[i],".")==0 || strcmp(namelist[i],"..")==0)
          continue;
 if(S_ISDIR(stalist[i].st_mode)){
     strcpy(temp,path);
     strcat(path,"/");
     strcat(path,namelist[i]);
     count=file_list(path,sta,name,mode);
     display_RU_LL(sta,name,count,mode);
     strcpy(path,temp);
 }
    }
}
/*-Ri 参数,简单显示所有文件,包括目录下的子目录,及节点号*/
void display_RU_IL(struct stat* stalist,char (*namelist)[LENGTH],int n,int mode)
{
    int i,count;
    char path[LENGTH]={0},temp[LENGTH]={0};
    struct stat sta[MAX_FILE_COUNT];
    char name[MAX_FILE_COUNT][LENGTH];
    puts(get_current_dir_name());
    display_IL(stalist,namelist,n);
    putchar('\n');
    strcpy(path,get_current_dir_name());

for(i=0;i<n;i++){
 if(strcmp(namelist[i],".")==0 || strcmp(namelist[i],"..")==0)
          continue;
 if(S_ISDIR(stalist[i].st_mode)){
     strcpy(temp,path);
     strcat(path,"/");
     strcat(path,namelist[i]);
     count=file_list(path,sta,name,mode);
     display_RU_IL(sta,name,count,mode);
     strcpy(path,temp);
 }
    }
}
/*-Ril 参数,显示所有文件,包括目录下面的子目录的详细信息,及节点号*/
void display_RU_IL_LL(struct stat * stalist,char (*namelist)[LENGTH],int n,int mode)
{
    int i,count;
    char path[LENGTH]={0},temp[LENGTH]={0};
    struct stat sta[MAX_FILE_COUNT];
    char name[MAX_FILE_COUNT][LENGTH];
    puts(get_current_dir_name());
    display_LL_IL(stalist,namelist,n);
    putchar('\n');
    strcpy(path,get_current_dir_name());

for(i=0;i<n;i++){
 if(strcmp(namelist[i],".")==0 || strcmp(namelist[i],"..")==0)
          continue;
 if(S_ISDIR(stalist[i].st_mode)){
     strcpy(temp,path);
     strcat(path,"/");
     strcat(path,namelist[i]);
     count=file_list(path,sta,name,mode);
     display_RU_IL_LL(sta,name,count,mode);
     strcpy(path,temp);
 }
    }
}
//错误处理函数
void error(char* error_message,int line)
{
    char str[5];
    sprintf(str,"%d:",line);
    strcat(str,error_message);
    perror(str);
    exit(EXIT_FAILURE);
}

(0)

相关推荐

  • linux 中的ls命令参数详解及ls命令的使用实例

    一.ls命令参数详解 可以通过阅读 ls 的说明书页(man ls)来获得选项的完整列表. -a – 全部(all).列举目录中的全部文件,包括隐藏文件(.filename).位于这个列表的起首处的 .. 和 . 依次是指父目录和你的当前目录. -l – 长(long).列举目录内容的细节,包括权限(模式).所有者.组群.大小.创建日期.文件是否是到系统其它地方的链接,以及链接的指向. -F – 文件类型(File type).在每一个列举项目之后添加一个符号.这些符号包括:/ 表明是一个目录:

  • linux ls命令教程及ls命令使用方法

    ls命令按文件大小查看文件 a.降序:ls -lsh moudaen@morton:~$ ls -lsh total 20M 20M -rw-r--r-- 1 moudaen 65536 20M Nov 11 17:44 Gender.war 4.0K drwxr-xr-x 2 moudaen 65536 4.0K Nov 11 17:44 test 8.0K -rw-r--r-- 1 moudaen 65536 5.2K Nov 11 11:44 MyApp.java 命令解释: ls后面的三

  • 详解如何在Linux(CentOS 7)命令行模式安装VMware Tools

    本例中为在Linux(以CentOS 7为例)安装VMware Tools. 1.首先启动CentOS 7,在VMware中点击上方"VM",点击"Install VMware Tools..."(如已安装则显示"Reinstall VMware Tools..."). 2.在命令行输入"ls /dev"查看. 3.输入"mkdir /mnt/cdrom"在/mnt目录下新建一个名为cdrom的文件夹. 4

  • linux中ls命令使用详解

    ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看linux文件夹包含的文件而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等.ls 命令在日常的linux操作中用的很多! 1. 命令格式: ls [选项] [目录名] 2. 命令功能: 列出目标目录中所有的子目录和文件. 3. 常用参数: -a, –all 列出目录下的所有文件,包括以

  • linux 中ls命令详解

    ls命令用来显示目标列表,在Linux中是使用率较高的命令.ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件. 语法 ls(选项)(参数) 选项 -a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出): -A:显示除影藏文件“.”和“..”以外的所有文件列表: -C:多列显示输出结果.这是默认选项: -l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列: -F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文

  • 浅谈Linux中的chattr与lsattr命令

    PS:有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了.chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux系统都是2.6以上内核了.通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录.chattr命令不能保护/./dev./tmp./var目录.lsattr命令是显示chattr命令设置的文件属性. 这两个命令是用来查看和改变文件.目录属性的,与chmod这个命令相比,ch

  • linux lsof命令详解及实例

    linux lsof命令详解 简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口.因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过

  • Linux恢复删除文件的lsof命令详解

    lsof命令 lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP.UDP).找回/恢复删除的文件.是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行. 在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操

  • Linux ls命令参数详解

    -a -- 全部(all).列举目录中的全部文件,包括隐藏文件(.filename).位于这个列表的起首处的 .. 和 . 依次是指父目录和你的当前目录.      -l -- 长(long).列举目录内容的细节,包括权限(模式).所有者.组群.大小.创建日期.文件是否是到系统其它地方的链接,以及链接的指向.      -F -- 文件类型(File type).在每一个列举项目之后添加一个符号.这些符号包括:/ 表明是一个目录:@ 表明是到其它文件的符号链接:* 表明是一个可执行文件.    

  • linux c模拟ls命令详解

    复制代码 代码如下: /* 模拟ls命令,实现参数-tariRl.有些代码重复出现,可改进 可以在该程序的基础上增加参数,该程序思路清晰,容易扩展 */#include<stdio.h>#include<string.h>#include<stdlib.h>#include<sys/types.h>#include<unistd.h>#include<sys/stat.h>#include<dirent.h>#includ

  • linux中权限管理命令详解(chmod/chown/chgrp/unmask)

    Linux操作系统对多用户的管理,是非常繁琐的,所以用组的概念来管理用户就变得简单,每个用户可以在一个独立的组,每个组也可以有零个用户或者多个用户.本文给大家介绍linux中权限管理命令详解(chmod/chown/chgrp/unmask),具体内容如下: chmod 解释 命令名称:chmod 命令英文原意:change the permissions mode of a file 命令所在路径:/bin/chmod 执行权限:所有用户功能描述:改变文件或目录权限 语法 chmod [{ug

  • linux 下的yum命令详解

    yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载.安装.yum提供了查找.安装.删除某一个.一组甚至全部软件包的命令,而且命令简洁而又好记. yum的命令形式一般是如下:yum [options] [command] [package ...] 其中的[opt

  • LINUX重启MYSQL的命令详解

    如何启动/停止/重启MySQL 一.启动方式 1.使用 service 启动:service mysqld start 2.使用 mysqld 脚本启动:/etc/inint.d/mysqld start 3.使用 safe_mysqld 启动:safe_mysqld& 二.停止 1.使用 service 启动:service mysqld stop 2.使用 mysqld 脚本启动:/etc/inint.d/mysqld stop 3. mysqladmin shutdown 三.重启 1.

  • Linux学习之mkdir命令详解

    目录 前言 1. 文件概念基础知识 2. mkdir命令 前言 最近几天越来越对Linux很感兴趣了, 想再见塔克斯的心情也是越来越浓烈, 自从它给我留了110110110之后,就没了联系. 到现在我也是一头雾水, 我又找不到它而且又没有联系方式, 但是心中的烈火已经被点燃, 趁着月色我又开始学习起来. 1. 文件概念基础知识 上几个命令都是对文件或者文件夹进行操作的, 那么问题就来了: Linux是先有文件还是先有文件夹(目录)? 首先我们来看一下文件与文件夹的区别是什么? 文件:以计算机硬盘

  • Linux系统命令中tree命令详解

    介绍 tree 命令英文理解为树的意思,其功能是是创建文件列表,将目录所有文件以树状的形式列出来.是一款在颜值上优先于ls的命令. linux中的tree命令默认并不会安装,下面来先看看tree安装 安装方法 tar -zxvf tree-1.7.0.tgz cd tree-1.7.0 make cp -af tree /usr/bin 或者 yum install -y tree tree命令详解 -a 显示所有文件和目录. -A 使用ASNI绘图字符显示树状图而非以ASCII字符组合. -C

  • Linux系统中systemctl命令详解

    Linux Systemctl是一个系统管理守护进程.工具和库的集合,用于取代System V.service和chkconfig命令,初始进程主要负责控制systemd系统和服务管理器.通过Systemctl –help可以看到该命令主要分为:查询或发送控制命令给systemd服务,管理单元服务的命令,服务文件的相关命令,任务.环境.快照相关命令,systemd服务的配置重载,系统开机关机相关的命令. 1. 列出所有可用单元 # systemctl list-unit-files 2. 列出所

  • Linux下的chkconfig命令详解

    chkconfig命令 Linux下的chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法 chkconfig [–add][–del][–list][系统服务] 或 chkconfig [–level <等级代号>][系统服务][on/off/reset] chkconfig在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是,返回true

  • Linux查看系统配置常用命令详解

    本文为大家分享了Linux查看系统配置常用命令,供大家参考,具体内容如下 系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -tv # 列出所有PCI设备 # lsusb -tv # 列出所有USB设备 # lsmod # 列出加载的内核模块 # env # 查看环境变量 资源 # free -m #

随机推荐