Как посмотреть код программы в линуксе

Когда люди говорят о Linux, они обычно имеют в виду дистрибутив Linux. Строго говоря, Linux — это ядро, основной компонент операционной системы, который, проще говоря, действует как мост между программными приложениями и оборудованием. Дистрибутив Linux — это операционная система, состоящая из ядра Linux, инструментов и библиотек GNU, а также коллекций программного обеспечения. Обычно дистрибутивы Linux включают среды рабочего стола, систему управления пакетами и набор предустановленных приложений.

Некоторые из самых популярных дистрибутивов Linux — это Debian, Red Hat, Ubuntu, Arch Linux, Fedora, CentOS, Kali Linux, OpenSUSE, Linux Mint и т. Д.

Когда вы впервые входите в систему Linux, прежде чем выполнять какую-либо работу, всегда полезно проверить, какая версия Linux работает на машине. Например, определение дистрибутива Linux может помочь вам понять, какой менеджер пакетов вам следует использовать для установки новых пакетов.

В этой статье показано, как с помощью командной строки проверить, какой дистрибутив и версия Linux установлены в вашей системе.

Вопрос — ответ #4 — Как читать исходный код других программ? Зачем?

команда lsb_release

Утилита lsb_release отображает информацию LSB (Linux Standard Base) о дистрибутиве Linux. Эта команда должна работать во всех дистрибутивах Linux, в lsb-release установлен пакет lsb-release :

lsb_release -a
No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 9.5 (stretch) Release: 9.5 Codename: stretch

Дистрибутив и версия Linux показаны в строке описания. Как видно из вывода выше, в моей системе установлен Debian GNU / Linux 9.5 (stretch).

Вместо того, чтобы печатать всю приведенную выше информацию, вы можете отобразить строку описания, в которой ваша версия Debian -d ключом -d .

lsb_release -d

Результат должен выглядеть примерно так:

Description: Debian GNU/Linux 9.5 (stretch)

Если вы получили сообщение «команда не найдена: lsb_release», вы можете попытаться определить версию Linux, используя другие методы, указанные ниже.

/etc/os-release файл

Файл /etc/os-release содержит идентификационные данные операционной системы, включая информацию о дистрибутиве. Этот файл является частью пакета systemd и должен присутствовать во всей системе, в которой работает systemd.

Чтобы просмотреть содержимое файла os-release , используйте cat или less :

cat /etc/os-release

Результат должен выглядеть примерно так:

PRETTY_NAME=»Debian GNU/Linux 9 (stretch)» NAME=»Debian GNU/Linux» VERSION_ID=»9″ VERSION=»9 (stretch)» ID=debian HOME_URL=»https://www.debian.org/» SUPPORT_URL=»https://www.debian.org/support» BUG_REPORT_URL=»https://bugs.debian.org/»

/etc/issue файл /etc/issue

Файл /etc/issue содержит текст идентификации системы, который печатается перед запросом на вход. Обычно этот файл содержит информацию о версии Linux:

cat /etc/issue

Результат будет выглядеть примерно так:

Debian GNU/Linux 9 n l

команда hostnamectl

Утилита hostnamectl является частью systemd и используется для запроса и изменения имени хоста системы. Эта команда также отображает дистрибутив Linux и версию ядра .

Читайте также:
Программа если пропал звук

Как ВЗЛОМАТЬ приложение и получить ИСХОДНЫЙ КОД программы? [Reverse engineering, JetBrains dotPeek]


hostnamectl
Static hostname: debian9.localdomain Icon name: computer-vm Chassis: vm Machine ID: a92099e30f704d559adb18ebc12ddac4 Boot ID: 7607cbe605d44f638d6542d4c7b3878e Virtualization: qemu Operating System: Debian GNU/Linux 9 (stretch) Kernel: Linux 4.9.0-8-amd64 Architecture: x86-64

/etc/*release файл /etc/*release

Если ни одна из вышеперечисленных команд у вас не работает, то, скорее всего, вы используете очень старый и устаревший дистрибутив Linux. В этом случае вы можете использовать одну из следующих команд, которая должна распечатать содержимое файла выпуска или версии дистрибутива:

cat /etc/*release
cat /etc/*version

Вы можете найти больше информации о файлах релиза / версии по этой ссылке .

команда uname

Команда uname отображает несколько системной информации, включая архитектуру ядра Linux, имя, версию и выпуск.

Чтобы узнать, какая версия ядра Linux работает в вашей системе, введите следующую команду:

uname -srm
Linux 4.9.0-8-amd64 x86_64

Приведенный выше вывод говорит нам, что ядро Linux 64-битное, а его версия — «4.9.0-8-amd64».

Выводы

Есть несколько различных команд, которые могут помочь вам узнать дистрибутив Linux и версию, работающую в системе.

Если у вас есть дистрибутив Linux со средой рабочего стола, вы также можете проверить свой дистрибутив и версию с помощью графического интерфейса.

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Источник: routerus.com

Как просмотреть и просмотреть исходный код ядра Linux? — Подсказка по Linux

Ядро Linux — это ядро ​​операционной системы (ОС), которое позволяет ей поддерживать оборудование, протоколы и многое другое и управлять ими. В этом руководстве будет кратко объяснена структура исходного кода ядра. Корневая папка ядра, расположенная в / usr / src /, обычно / usr / src / linux *, содержит его исходный код, подобный тому, который вы можете просмотреть по адресу https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/?h=v5.1.3

Исходный каталог содержит следующие подкаталоги, называемые дерево ядраизучение структуры дерева ядра и функции каждого пути — это первый шаг к просмотру ядра.

Корневой каталог дерева ядра:

Документация/: исходная документация ядра.

ЛИЦЕНЗИИ /: Он содержит лицензии, которые должны применяться к исходному тексту ядра и отдельным исходным файлам, которые могут иметь разные лицензии. Внутри этого каталога вы найдете 3 подкаталога: предпочтительный (GNU GPL), исключения перечислены в файле КОПИРОВАНИЯ и Другой.

арка /: исходные коды для конкретных архитектур (например, powerpc, x86 и т. д.). Внутри этого каталога вы найдете подкаталоги, принадлежащие каждой поддерживаемой архитектуре: i386, sparc, arm и т. Д.

блокировать/: Уровень блочного ввода-вывода, содержит код для управления блочными устройствами (такими как жесткие диски, DVD, гибкие диски и т. д.) и их запросы.

Сертификаты /: сертификаты и файлы подписи, чтобы включить подпись модуля, чтобы ядро ​​загружало подписанные модули, это может быть полезно для предотвращения запуска вредоносного кода с такими модулями ядра, как руткиты.

Крипто /: Крипто API. Содержит криптографические шифры, которые решают задачи шифрования и сжатия.

драйверы /: Драйверы аппаратных устройств. Содержит код драйверов устройств для поддержки оборудования. В этом каталоге вы найдете подкаталоги для каждого оборудования, такого как видео, Bluetooth и т. Д. (Любое поддерживаемое оборудование).

Читайте также:
Как замерить децибелы в домашних условиях программа

fs /: код для виртуальной файловой системы и дополнительных файловых систем. Этот каталог содержит код для поддержки, чтения и записи файловых систем.

включают/: заголовки ядра. Этот каталог содержит заголовки C для файлов ядра, таких как функции для компиляции кода.

в этом/: загрузка ядра. Содержит исходный код, связанный с инициализацией ядра. Исходный код хранится в файле с именем mainc.c в каталоге /init. Код инициализирует ядро ​​и некоторые начальные процессы.

ipc /: Межпроцессное взаимодействие, такое как сигналы и каналы.

ядро /: Основные подсистемы, такие как код обработки сигналов планировщика и т. Д.

lib /: библиотечные подпрограммы стандартные строковые операции, операции, зависящие от оборудования, отладочные подпрограммы и код синтаксического анализа командной строки.

мм /: Управление памятью и виртуальной памятью. Ядро управляет как оборудованием, так и виртуальной памятью (свопинг). В этом каталоге хранится код для управления памятью.

сеть/: Сетевой стек. Содержит код, связанный с протоколами связи, такими как IP, TCP, UP и т. Д.

образцы /: пример кода и файлы конфигурации.

скрипты /: скрипты для сборки ядра.

безопасность/: Модуль безопасности Linux (LSM) — это структура, позволяющая использовать политики безопасности для управления модулями.

звук/: Звуковая подсистема, здесь вы найдете звуковые драйверы и код, связанный со звуком, например ALSA,

инструменты/: инструменты для разработки сжатого ядра, такие как ACPI, cgroup, инструменты тестирования USB, тестовый модуль vhost, инструменты GPIO, IIO и spi, инструмент внутренней энергетической политики и многое другое.

usr /: initramfs, который укореняет файловую систему и init в кеш памяти ядра.

virt /: Виртуализация, этот каталог содержит модуль KVM (Kernel Virtual Machine) для гипервизора.

Это основные подкаталоги дерева ядра и их функции, надеюсь, они вам пригодятся.

Источник: ciksiti.com

Русские Блоги

Несколько способов для Linux получить исходный код веб-страницы

Блог JavaEye был запущен, когда я был аспирантом, и был в основном заброшен. Теперь я решил записать проблемы или решения, встречающиеся в обычном программировании.

Первый — использовать инструменты из linux для получения исходного кода веб-страницы. Я использую Wget и также могу использовать Curl. Если curl более гибок, можно установить много параметров.

// Получить веб-страницу через Wget
string GetHtmlByWget(string url)
// Получить имя файла загружаемой веб-страницы
string fileName = url.substr((int)url.find_last_of(«/») + 1);
if(fileName != «»)
string strCom = «wget ​​-q»; // команда wget, -q означает, что не отображать информацию о загрузке
strCom.append(url);
system (strCom.c_str ()); // Выполнить wget

ifstream fin(fileName.c_str());
if(!fin)
return «»;
>
string strHtml = «»;
char chTemp[1024] = «»;
// Чтение файла веб-страницы в память
while(fin.getline(chTemp , 1024))
strHtml.append(string(chTemp));
strcpy(chTemp , «»);
>
fin.close();
strCom = «rm -f»; // Команда удаления файла, -f означает прямое удаление без запроса
strCom.append(fileName);
system (strCom.c_str ()); // Удалить только что скачанный файл
return strHtml; // Возврат к исходному коду веб-страницы
>
else
return «»;
>
>

Читайте также:
Diskdigger отзывы о программе

Второе — использовать сокет для получения исходного кода.

// Получить исходный код веб-страницы через GET
string GetHtmlByGet(string url)
string strHtmlContent = «»;
int sockfd;
struct sockaddr_in addr;
struct hostent *pURL;
char text[RECVBUF];

// Анализируем ссылку
UrlInfo urlInfo = ParseURL(url);
string sAccept = «Accept: */*rnAccept-Language: zh-cnrnAccept-Encoding: gzip, deflate»;
// Другой хост UserAgent отличается
string sUserAgent = «Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10»;
// Преобразовать порт в строку
char t[6];
string strPort;
sprintf(t,»%d», urlInfo.Port);
strPort = t;
// Построить строку отправки
string strRequest = «»;
strRequest.append(«GET «);
strRequest.append(urlInfo.File);
strRequest.append(«?»);
strRequest.append(urlInfo.Body);
strRequest.append(» HTTP/1.1rn»);
strRequest.append(sAccept);
strRequest.append(«rnUser-Agent:»);
strRequest.append(sUserAgent);
strRequest.append(«rnHost:»);
strRequest.append(urlInfo.Host);
strRequest.append(«:»);
strRequest.append(strPort);
strRequest.append(«rnConnection: Keep-Alivernrn»);

char* host = const_cast(urlInfo.Host.c_str());
sockfd = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP); // Отправить по TCP
pURL = gethostbyname(host);
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = *((unsigned long*)pURL->h_addr);
addr.sin_port = htons(80);

// Connect
connect(sockfd,(struct sockaddr *)
// отправить
send(sockfd, const_cast(strRequest.c_str()), strRequest.length(), 0);
// принять
while(recv(sockfd, text, RECVBUF, 0) > 0)
strHtmlContent.append(text);
bzero(text,RECVBUF);
>
// Закрыть сокет
close(sockfd);
// Возвращаем результат принятия
return strHtmlContent;
>

#include
#include
#include

#define MAX_BUF 65536

char wr_buf[MAX_BUF+1];
int wr_index;

/*
* Write data callback function (called within the context of
* curl_easy_perform.
*/
size_t write_data( void *buffer, size_t size, size_t nmemb, void *userp )
<
int segsize = size * nmemb;

/* Check to see if this data exceeds the size of our buffer. If so,
* set the user-defined context value and return 0 to indicate a
* problem to curl.
*/
if ( wr_index + segsize > MAX_BUF ) <
*(int *)userp = 1;
return 0;
>

/* Copy the data from the curl buffer into our buffer */
memcpy( (void *)

/* Update the write index */
wr_index += segsize;

/* Null terminate the buffer */
wr_buf[wr_index] = 0;

/* Return the number of bytes received, indicating to curl that all is okay */
return segsize;
>

/*
* Simple curl application to read the index.html file from a Web site.
*/
int main( void )
<
CURL *curl;
CURLcode ret;
int wr_error;

wr_error = 0;
wr_index = 0;

/* First step, init curl */
curl = curl_easy_init();
if (!curl) <
printf(«couldn’t init curln»);
return 0;
>

/* Tell curl the URL of the file we’re going to retrieve */
curl_easy_setopt( curl, CURLOPT_URL, «www.exampledomain.com» );

/* Tell curl that we’ll receive data to the function write_data, and
* also provide it with a context pointer for our error return.
*/
curl_easy_setopt( curl, CURLOPT_WRITEDATA, (void *)
curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, write_data );

/* Allow curl to perform the action */
ret = curl_easy_perform( curl );

printf( «ret = %d (write_error = %d)n», ret, wr_error );

/* Emit the page if curl indicates that no errors occurred */
if ( ret == 0 ) printf( «%sn», wr_buf );

curl_easy_cleanup( curl );

return 0;
>

Источник: russianblogs.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru