Из дворян Псковской губернии. Отец — капитан. 9 февраля 1779 записан капралом в л.-гв. Измайловский полк. На действительную службу вступил в 1787 г. В 1789—1790 гг. воевал со шведами и был ранен пулей в берцовую кость левой ноги. 1 января 1790 выпущен из лейб-гвардии Конного полка капитаном в Тенгинский пехотный полк.
В 1794 г. находился в боях с польскими конфедератами, в 1799—1800 гг. участвовал почти во всех главных баталиях Итальянского и Альпийского походов А. В. Суворова, командуя батальоном, а потом полком: при Адде, Треббии, Нови (ранен), Сен-Готарде и у Чертова моста. В подполковники был произведён 15 октября 1800, 25 июля 1806 — в полковники.
Шефом 28-го егерского полка назначен 27 января 1808, до этого с 25 сентября 1807 был командиром этого полка. Во главе его отличился в 1810 г. в боях с турками под Шумлой. Награждён орденом Св. Георгия 4-го кл. 28 сентября 1810
Под Рущуком ранен в правый бок пулей, получил чин генерал-майора 3 августа 1810.
В 1812 г. 28-й егерский полк, шефом которого был Корнилов, состоял в 3-й бригаде 18-й пехотной дивизии в корпусе С. М. Каменского 3-й Резервной Обсервационной (с 18 сентября 1812 после объединения с Дунайской — 3-й Западной) армии. Сражался при Кобрине, Городечно, Дубно. Окруженный у местечка Выжва 13 августа корпусом австрийских войск, он во главе 28-го егерского полка пробился штыками сквозь превосходящего противника и тем спас от плена весь отряд. В ноябре 1812 г. отряд Корнилова на правом берегу Березины попытался помешать переправе главных сил Наполеона и выдержал суровый бой.
1 декабря 1812 года участвовал в сражении под Плещеницами.
В 1813 г. принимал участие в осаде Торна, в сражениях при Кенигсварте, Бауцене (где его бригада в течение дня удерживала позицию), Кацбахе (назначен командиром 15-й дивизии), Лейпциге. В 1814 г. принимал участие в сражениях под Бриенном и Лаоном. Награждён орденом Св. Георгия 3-го кл. № 355
При наступлении союзников на Париж его дивизия отличилась, захватив две тысячи пленных и десять орудий. В мирное время с 1 января 1827 командовал 17-й дивизией. 23 апреля 1818 произведён в генерал-лейтенанты. Скончался в 1828 г. во время осады крепости Журжу. Похоронен в монастыре Вакарешти в г. Бухаресте. (По другим его прах перезахоронен на родине в Холмском уезде, где он владел имением Городище. С большой долей вероятности можно утверждать, что местом его упокоения стал погост Княжьи Села.)
Дети: Иван Петрович Корнилов (1811—1901) — известный географ, педагог, историк школ и системы образования в России, член Совета Министра народного просвещения. Фёдор Петрович Корнилов (1809—1895) — государственный деятель, московский гражданский губернатор (1859—1861), управляющий делами Комитета министров (1861—1874), член Госсовета, действительный тайный советник. Павел Петрович Корнилов (1803—1864) — статский советник. Петр Петрович Корнилов (1804—1869) — генерал-лейтенант, комендант Москвы.